【一起来学java数据结构】——Set
Set是一个在Collection下的一个数据结构。
它和Map很像,不同点就是:Set实现了Collection,而Map并没有实现它。
更重要的一点是:Set里面只是存储了Key,没有存储Value
![image-20220224172849928](https://gitee.com/luoxiangyu/picture-bed/raw/master/202202241912025.png)
Set的方法
下面就先来介绍一下set的一些基本方法
public static void main(String[] args) {
Set<Integer> set=new HashSet<>();
set.add(1);
System.out.println(set.add(2));//true
System.out.println(set.contains(1));//true
System.out.println(set.contains(100));//false
System.out.println(set.size());//2
System.out.println(set.remove(100));//false
System.out.println(set.remove(1));//true
System.out.println(set.isEmpty());//false
set.clear();
System.out.println(set.isEmpty());//true
}
toArray
将set里的值转换成Array
public static void main(String[] args) {
Set<Integer> set=new HashSet<>();
set.add(1);
set.add(2);
set.add(3);
set.add(4);
Object[] objects= set.toArray();
for (Object o:objects) {
System.out.print(o+" ");
}
}
----------------------------------------------------
//还可以使用下面的代码
Integer[] integers=set.toArray(new Integer[0]);
for (Integer integer:integers) {
System.out.print(integer+" ");
}
Iterator
这是一个迭代器和while一起使用
public static void main(String[] args) {
Set<Integer> set=new HashSet<>();
set.add(1);
set.add(2);
set.add(3);
set.add(4);
Iterator<Integer> iterator=set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
containsAll
public static void main(String[] args) {
Set<Integer> set=new HashSet<>();
set.add(1);
set.add(2);
set.add(3);
set.add(4);
List<Integer> list=new ArrayList<>();
list.add(1);
list.add(2);
System.out.println(set.containsAll(list));//true
list.add(0);
System.out.println(set.containsAll(list));//false
}
检查Set里面是不是包含其他集合里面的元素
addAll
将另一个集合的内容加入到Set中,并会自动去重
public static void main(String[] args) {
Set<Integer> set=new HashSet<>();
set.add(1);
set.add(2);
set.add(3);
set.add(4);
List<Integer> list=new ArrayList<>();
list.add(1);
list.add(2);
set.addAll(list);
System.out.println(set);// 1 2 3 4
list.add(0);
set.addAll(list);
System.out.println(set);//0 1 2 3 4
}
Set的特点
- 和Map不一样,Set本身是继承了Collection接口的
- 实现Set接口的常用类是HashSet和TreeSet,还用一个不常用的类是LinkedHashSet
- Set里面只存放Key,不存放Value
- Set里面没有提供修改Key的方法,所以只能删掉再重新插入
- key的值不可以相同且不可以为null
- Set的最大的作用是去重