美文网首页
Set集合,HashSet集合

Set集合,HashSet集合

作者: 李霖神谷 | 来源:发表于2017-04-12 21:50 被阅读20次

Set判断两对象是否相同,不是使用==运算符,而是根据equals方法,只要方法返回值为true,Set就不会接收这两个对象。
HashSet是Set接口的典型实现,大多数使用Set集合时就使用这个实现类。
其具有以下几个特点:
不能保证元素的排列顺序,顺序有可能发生变化。
HashSet不是同步的,假设多个线程同时修改HashSet集合时,则必须通过代码来实现。
集合元素可以为null。
当向HashSet集合存入一个集合时,HashSet会调用该对像的hashCode方法来得到该对像的hashCode值,根据该值来确定该对像在HashSet中储存的位置,HashSet判断两个对象相等必须通过equals方法相等,并且两个对象返回的hashCode的值相等。

import java.util.HashSet;

class A{
    public boolean equals(Object obj){
        return true;
    }
}
class B{
    public int hashCode(){
        return 8;
    }
}
class C{
    public boolean equals(Object obj){
        return true;
    }
    public int hashCode(){
        return 2;
    }
}
public class JiHeDemo{
    public static void main(String[] args) {
        HashSet h=new HashSet();
        h.add(new A());
        h.add(new A());
        h.add(new B());
        h.add(new B());
        h.add(new C());
        h.add(new C());
        System.out.println(h);
    }
}

如果两对象的hashCode方法返回的hashCode值相同,但是通过equals方法比较返回的是false将会比较麻烦,因为两对象HashCode值相同,所以HashSet试图将他们保存在同一位置,但是又不行(否则将只剩下一个对象),而hashSet访问集合元素时,也是根据元素的hashCode值来快速定位的。如果HashSet两个以上的元素具有相同的hashCode值,将会导致性能的下降。

相关文章

  • Java集合

    目录: Java集合APICollection 体系Set 集合HashSet 的存储机制:HashSet 还有一...

  • Java集合框架2

    Set集合 HashSet TreeSet

  • Java集合总结:Set集合

    Set集合(HashSet是典型实现) set集合特点:1.无序性:set集合是无序的2.不可重复:set集合是不...

  • Set集合,HashSet集合

    Set判断两对象是否相同,不是使用==运算符,而是根据equals方法,只要方法返回值为true,Set就不会接收...

  • day17

    1:登录注册案例(理解) 2:Set集合(理解) (1)Set集合的特点:无序,唯一 (2)HashSet集合(掌...

  • java常用方法

    java集合的方法:①Set set = new HashSet<>();②set.cont...

  • java常用方法

    java集合的方法:①Set set = new HashSet<>();②set.cont...

  • Java集合系列-HashSet

    原创文章,转载请标注出处:《Java集合系列-HashSet》 一、概述 HashSet是基于哈希实现的set集合...

  • HashSet集合API方法实例演示

    HashSet HashSet集合是Set集合的子类,无序,不重复,底层使用hash算法计算存储位置。增加删除时效...

  • java基础系列06--集合(2)

    JAVA集合二 Set集合 特点:无索引,不可重复,无序,存取不一致 HashSet类 HashSet原理: 我们...

网友评论

      本文标题:Set集合,HashSet集合

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