美文网首页java学习笔记
HashSet集合——java学习之<11>

HashSet集合——java学习之<11>

作者: pm_kai | 来源:发表于2018-02-24 16:47 被阅读0次

    1.HashSet特点

    • HashSet线程不安全,存取速度快,保证元素的唯一性是通过覆盖掉Object里面的hashCode()方法和equals()方法实现的。
    • HashSet是基于Hash算法实现的,性能通常优于TreeSet,So通常使用HashSet。

    2.关于hashCode()方法和equals()方法

    • 需要先用hashCode()对比,
    • 若不一样,则这两个肯定不等,不必再用equals().
    • 若hashCode()相同,再对比equals(),如果equals()也相同,则两个对象真的相同
    package gather;
    import java.util.HashSet;
    import java.util.Iterator;
    public class HashCodeDemo {
        public static void main(String[] args) {
            HashSet<student> h = new HashSet<student>();
            h.add(new student("张三"));
            h.add(new student("张三"));
            h.add(new student("李四"));
            //因为h里面存放的是student这个对象,所以直接打印出来的是地址
            System.out.println(h);
            
            Iterator<student> i = h.iterator();//迭代器
            while (i.hasNext()) {
                student ob = i.next();
                System.out.println(ob.name);
            }
        }
    }
    class student{
        String name;
        public student(String name){
            this.name=name;
        }
        /*
         * (non-Javadoc)
         * @see java.lang.Object#hashCode()
         * 需要先用hashCode()对比,
         * 若不一样,则这两个肯定不等,不必再用equals().
         * 若hashCode()相同,再对比equals(),如果equals()也相同,则两个对象真的相同
         */
        public int hashCode(){
            int num = name.hashCode();
            System.out.println("---hashCode---");
            return num;
        }
        public boolean equals(Object obj) {
            System.out.println("---equals---");
            return true;
        }
    }
    

    相关文章

      网友评论

        本文标题:HashSet集合——java学习之<11>

        本文链接:https://www.haomeiwen.com/subject/vbxcxftx.html