摘要:
前面己经介绍过Set 集合,它类似于一个罐子, 程序可以依次把多个对象"丢进" Set 集合,而Set集合通常不能记住元素的添加顺序。Set 集合与Collection 基本相同,没有提供任何额外的方法。实际上Set 就是Collection ,只是行为略有不同( Set 不允许包含重复元素) 。Set 集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个Set 集合中, 则添加操作失败, addO方法返回fal se ,且新元素不会被加入。
上面介绍的是Set 集合的通用知识,因此完全适合后面介绍的HashSet、TreeSet 和EnumSet 三个实现类,只是三个实现类还各有特色。
Java Set集合的概述及特点:https://blog.csdn.net/hewenqing1/article/details/104166374
HashSet 类
一、概述:
HashSet 是Set 接口的典型实现,大多数时候使用Set 集合时就是使用这个实现类。HashSet 按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能。
二、特点:
1、不能保证元素的排列顺序,顺序可能与添加顺序不同,顺序也有可能发生变化。
代码实现:存储字符串并遍历
package cn.wen_01;
import java.util.HashSet;
/*
* HashSet:存储字符串并遍历
*/
public class HashSetDemo {
public static void main(String[] args) {
// 创建集合对象
HashSet<String> hs = new HashSet<String>();
// 创建并添加元素
hs.add("hello");
hs.add("world");
hs.add("java");
hs.add("world");
// 遍历集合
for (String s : hs) {
System.out.println(s);
}
}
}
2、HashSet如何保证元素唯一性? 为什么存储字符串的时候,字符串内容相同的只存储了一个呢?
1)查看源码:选中类名(F3或者Ctrl+鼠标点击) 例如图下的add()方法的查询,其他类似。
这里不是完整的代码,截取代码片段按顺序组成如下:(按方法的顺序查找其中的源码)
interface Collection {
...
}
interface Set extends Collection {
...
}
class HashSet implements Set {
private s