1.Set
特点:存储一组无序的,唯一的对象。
2.HashSet
- 采用Hashtable哈希表存储结构。
- 优点:添加速度快,查询快,删除快。
- 缺点:无序。
public class TestSet {
public static void main(String[] args) {
//创建Set集合对象
Set<String> set= new HashSet<>();
//添加元素
set.add("熊大");
set.add("熊二");
set.add("维尼");
//遍历元素
System.out.println(set);
}
}
运行结果:
3.LinkedHashSet
- 采用哈希表存储结构,同时用链表维护次序。
- 有序(按照添加的顺序)
public class TestSet {
public static void main(String[] args) {
//创建Set集合对象
//Set<String> set= new HashSet<>();
Set<String> set= new LinkedHashSet<>();
//添加元素
set.add("熊大");
set.add("熊二");
set.add("维尼");
//遍历元素
System.out.println(set);
}
}
运行结果:
4.TreeSet
- 采用二叉树的存储结构。
- 优点:有序(自然顺序) 查询比List快(按内容查询)。
- 缺点:查询速度没有HashSet 快。
public class TestSet {
public static void main(String[] args) {
//创建Set集合对象
//Set<String> set= new HashSet<>();
//Set<String> set= new LinkedHashSet<>();
Set<String> set= new TreeSet<>();
//添加元素
set.add("S");
set.add("C");
set.add("A");
set.add("R");
set.add("E");
//遍历元素
System.out.println(set);
}
}
运行结果:
5.Set的一些使用方法与list一样
但是与索引相关的方法Set都没有,Set中没有get()方法来获取集合中的数据下标,因为Set是无序的。
6.Set的遍历
1>方法一:for-each
for(String elem:set){
System.out.println(elem);
}
方法二:迭代器
Iterator<String> iterator=set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
方法三:Lambda表达式+流式编程(JDK1.8)
set.forEach((elem)-> System.out.println(elem));