文章目录
一、Set是什么?
Public interface Set <E>
<E> 表示的泛型 -----容器中存放的元素的类型 —指代的是引用数据类型
基本数据类型不能当作泛型来使用,而是要使用基本数据类型的封装类
Set的特点
不能存在重复的元素(hashcode相同的元素叫重复的元素)
元素添加没有顺序
二、HashSet
1.HashSet特点
- 不能存在重复元素
- 底层结构是哈希表(HashTable)
- 无序----无索引
- 可以存放null元素
- 牺牲空间换时间 (桶)----运行速度较快
- 扩容和加载因子 需要根据hashMap的原理来决定
2.HashSet常用方法
addAll() -----并集
containsAll()-----子集
removeAll() -----差集
retainAll() ------交集
例题
String score[] s =
{“A,语文,98”,“B,数学,87”,“B,英语,56”
“C,语文,66” “G,数学,90”}
name[“A“ B C D E F G]
问哪些人没有参加考试
public class SetPr {
public static void main(String[] args) {
String [] score = {"A,语文,98","B,数学,87","B,英语,56","C,语文,66","G,数学,90"};
String [] name = {"A","B","C","D","E","F","G"};
Set<Character> s1 = new HashSet<Character>();
Set<Character> s2 = new HashSet<Character>();
for (int i = 0; i < name.length; i++)//添加元素
s1.add(name[i].charAt(0));
for (int i = 0; i < score.length; i++)
s2.add(score[i].charAt(0));
s1.removeAll(s2);//求有成绩的和所有人求差集,求出来的即是没有来考试的
Iterator<Character> iterator = s1.iterator();
while (iterator.hasNext())
System.out.println(iterator.next() + "没来考试!!!");
}
}
TreeSet
1.TreeSet的特点
- 底层结构是二叉树结构
- 二叉树认为能够存放在树形结构中的元素都是有序元素
- 不允许存放重复的元素
用法与HasSet基本类似
public class TreeSetTest {
public static void main(String[] args) {
Set<Integer> set = new TreeSet<Integer>();
set.add(7);
set.add(2);
set.add(3);
set.add(6);
set.add(5);
set.add(0);
set.add(0);
System.out.println(set);
}
}