/*
java.util.Set接口 extends Collection接口
Set接口的特点:
1.不允许存储重复的元素
2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历
*/
package day3;
import java.util.*;
public class Settes {
public static void main(String[] args) {
hashset();
linkedhashset();
}
/*
java.util.LinkedHashSet集合 extends HashSet集合
LinkedHashSet集合特点:
底层是一个哈希表(数组+链表/红黑树)+链表:多了一条链表(记录元素的存储顺序),保证元素有序
*/
private static void linkedhashset() {
Set<Integer> a = new LinkedHashSet<>();
Collections.addAll(a,1,1,3,5);
System.out.println(a);
//迭代器遍历
Iterator<Integer> it = a.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
//增强for遍历
for (Integer i : a){
System.out.println(i);
}
}
/*
java.util.HashSet集合 implements Set接口
HashSet特点:
1.不允许存储重复的元素
2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历
3.是一个无序的集合,存储元素和取出元素的顺序有可能不一致
4.底层是一个哈希表结构(查询的速度非常的快)
哈希冲突:两个元素的哈希地址相同,如果equals为false,则会存入集合,如果为true则不会存入集合
*/
private static void hashset() {
Set<Integer> a = new HashSet<>();
Collections.addAll(a,1,1,3,5);
System.out.println(a);
//因为没有索引,所以不能用普通for循环遍历
//迭代器遍历
Iterator<Integer> it = a.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
//增强for遍历
for (Integer i : a){
System.out.println(i);
}
}
}
java—Set集合
于 2022-01-10 22:26:02 首次发布