Set
1.概述及特点
- 一个不包含重复元素的
collection
。更确切地讲,set 不包含满足 e1.equals(e2)
的元素对 e1 和 e2,并且最多包含一个 null 元素。
- Set集合中的数据是无序的(因为Set集合没有下标)
- Set不允许有重复数据,允许有null,但是最多一个
- 由于其数据不可重复的特性,Set集合常用来给数据去重
2.HashSet
- 此类(HashSet)实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。
- HashSet底层是哈希表,包装了HashMap,相当于向HashSet中存入数据时,会把数据作为K存入内部的HashMap中,其中K不允许重复,允许使用null
- HashSet 线程不安全
3.相关测试
package cn.tedu.list;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class TestSet {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("牛气冲天");
set.add("虎虎生威");
set.add("虎虎生威");
set.add(null);
set.add("null");
System.out.println(set);
System.out.println(set.contains("牛气冲天"));
System.out.println(set.equals("牛气冲天"));
System.out.println(set.hashCode());
System.out.println(set.isEmpty());
System.out.println(set.remove(null));
System.out.println(set);
System.out.println(set.size());
Object[] array = set.toArray();
System.out.println(Arrays.toString(array));
Iterator<String> it = set.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
}
}
4.HashSet去重