java集合详解
一、set定义
1、Set
是元素无序并且不可以重复的集合,被称为集。
2、hashset
HashSet是Set的一个重要实现类,称为哈希集
HashSet中的元素无序并且不可以重复
HashSet中只允许一个null元素【因为不可重复性】
具有良好的存取和查找性能
二、hashset的增加
1、增加
HashSet cat=new HashSet();
cat.add(c);
先创建好hashset这个类的引用cat,
再通过add()方法将值存储到集合中
2、增加两个内容相同的对象
Cat c=new Cat("朵朵",2,"布偶");
Cat c2=new Cat("朵朵",2,"布偶");
打印一下结果,会发现有两条一模一样的数据。这似乎和hashset的不可重复性违背。
但其实并不是这样,这两条内容的引用地址不同,就会添加到一起。
3、剔除重复性的引用——equals和hashcode()组合
hashcode()
1、是为了减少寻找某数的步骤,提高查找的速度。如arraylist需要依次遍历数,才能找到正确的值。
2、而hashcode通过某种定义好的算法,将集合中的值按照某种方式计算出哈希码,根据哈希码分组,分别存储在若干个存储区域。
3、如果需要查找的内容和某个区域的哈希码相同,那么就在符合的区域中遍历。反之,则跳过这个集合。
equals
【有2种写法,只细讲第一种的代码】
public boolean equals(Object o) {
if (this == o) return true;
if(o.getClass()==Cat.class){
Cat cat=(Cat) o;
return getAge() == cat.getAge() &&
Objects.equals(getName(), cat.getName()) &&