[深入了解Java集合框架]-Set集合以及选用

Set

Set实现了Collection,所以他拥有Collection的全部方法

点击查看Collection的方法

特点

  • 不允许存储重复的元素
  • 没有索引以及带索引的方法
  • 不能使用 普通的for(fori循环)循环 遍历
  • 内部进行排序,并不是按照添加顺序排序
  • 可以有null,但是只能有一个

Set的实现类

Set 的实现类有 HashSetTreeSet

**HashSet:**内部是由哈希表(实际上是一个 HashMap 实例)支持的。集合元素可以是null,但只能放入一个null。无序的。

**TreeSet:**是二叉树实现的,有序的,或者根据创建 set 时提供的 Comparator 进行排序。


Set集合的使用

普通使用

//创建Set集合
Set<Integer> set = new HashSet<>();

//添加元素
set.add(1);
set.add(3);
set.add(5);
set.add(2);
set.add(3);//已经有了3这个元素了,再次添加无效

//循环遍历输出
for (Integer integer : set) {
    System.out.println("integer = " + integer);
}

输出结果
这样可以看到,代码中添加了两个3 这里却只输出一个

integer = 1
integer = 2
integer = 3
integer = 5

对集合进行去除重复

//创建一个list集合
List<Integer> list = new LinkedList<>();

//添加元素
list.add(3);
list.add(2);
list.add(4);
list.add(3);//这里也有一个重复的3

//遍历输出list集合
for (Integer listNum : list) {
    System.out.println("listNum = " + listNum);
}


//创建Set集合并且将list集合元素添加进去
Set<Integer> set = new HashSet<>(list);

//循环遍历输出
for (Integer setNum : set) {
    System.out.println("setNum = " + setNum);
}

输出结果
可以看到 setNum 里面只有一个3

listNum = 3
listNum = 2
listNum = 4
listNum = 3

setNum = 2
setNum = 3
setNum = 4

同样,这里使用其他的Object对象都可以做到去除重复项
具体去除重复的过程详细过程是Object对象的hashCode相同的添加失败

发布了65 篇原创文章 · 获赞 57 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_18604209/article/details/104502154