zoukankan      html  css  js  c++  java
  • Set HashSet

    package com.dh.learn.collection;
    
    import java.util.HashSet;
    import java.util.Set;
    
    public class LearnHashSet {
        public static void main(String[] args) {
            Set<Person> set = new HashSet<>();
            set.add(new Person("dh", 12));
            set.add(new Person("dh", 12));
            set.add(new Person("dh2", 12));
            set.add(new Person("dh3", 12));
    
            // set中有四个元素,乱序,与插入顺序无关。
            // 因为Person没有重写hashCode方法,所以会有两个dh-12的Person,因为他们的内存地址不同。
            // HashSet内部其实是用HashMap的key来实现的。
            for (Person person : set) {
                System.out.println(person);
            }
    
            // 重写hashcode方法之后,Set就可以判断BMW-10.0 是同一个元素啦
            Set<Car> cars = new HashSet<>();
            cars.add(new Car("BMW", 10.0f));
            cars.add(new Car("BMW", 10.0f));
            cars.add(new Car("BYD", 9.0f));
            cars.add(new Car("ASLS", 11.0f));
    
            for (Car car : cars) {
                System.out.println(car);
            }
    
    
            //TreeSet会按照元素顺序排序。是用TreeMap的key实现的。
        }
    
        static class Person {
            String name;
            int age;
    
            public Person(String name, int age) {
                this.name = name;
                this.age = age;
            }
    
            @Override
            public String toString() {
                return name + "===" + age;
            }
    
            @Override
            public boolean equals(Object obj) {
                return this.toString().equals(obj.toString());
            }
        }
    
        static class Car {
            String name;
            float price;
    
            public Car(String name, float price) {
                this.name = name;
                this.price = price;
            }
    
            @Override
            public String toString() {
                return name + "===" + price;
            }
    
            @Override
            public boolean equals(Object obj) {
                return this.toString().equals(obj.toString());
            }
    
            @Override
            public int hashCode() {
                return name.hashCode();
            }
        }
    }
  • 相关阅读:
    如何重写Java中的equals方法
    如何阅读论文
    新的开始
    react父组件调用子组件方法
    关于 webpack 的研究
    浅析HTTP代理原理
    Maven POM详解
    项目实战
    项目实战-Gulp使用
    AngularJS 项目开发实战
  • 原文地址:https://www.cnblogs.com/han6/p/11341504.html
Copyright © 2011-2022 走看看