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();
            }
        }
    }
  • 相关阅读:
    扯一扯纯函数
    10.28
    10.27 动手动脑5
    10.26
    10.25 周总结
    10.23
    10.22
    10.21 动手动脑4
    10.20
    10.19
  • 原文地址:https://www.cnblogs.com/han6/p/11341504.html
Copyright © 2011-2022 走看看