• 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();
            }
        }
    }
  • 相关阅读:
    使用python selenium webdriver模拟浏览器
    Xen基本原理
    Xen安装部署和基本原理
    Setups For Debugging QEMU with GDB and DDD
    Performance comparison amount different cache mode of KVM
    I/O 全虚拟化和准虚拟化 [KVM I/O QEMU Full-Virtualizaiton Para-virtualization]
    Useful plug-in collection of jenkins
    How to get YAST2 log during installing
    How to create a "BOOT USB DISK" for EXSI6.0
    php设计模式-单例模式
  • 原文地址:https://www.cnblogs.com/han6/p/11341504.html
Copyright © 2020-2023  润新知