因為Set接口繼承Collection接口,它與List集合的區別就是:List集合可以保存重復的數據,而Set集合不可以。
此外,Set接口有三個常用實現類:
1.HashSet,特點:
- 它不按照存儲的順序保存,具有不確定性,也就是說每一次遍歷集合出的元素排序不一定相同;
- 允許使用null元素
2.LinkedHashSet,特點:
- 它是HashSet的子類,但它卻是按照自然順序保存的(不是簡單的線性順序)
- 由於該實現類對象維護者一個運行於所有元素的雙重鏈接列表,且該鏈接列表定義了一個迭代順序(從名字上就可以看出Linked,被鏈接的,各個元素之間有一定的關系),
- 所以在遍歷該實現類集合時按照元素的插入順序進行遍歷
3.TreeSet,特點:
- 及實現Set接口,也實現了SortedSet接口,具有排序功能
- 存入TreeSet中的對象元素需要實現Comparable接口
如下有一個set集合:
Set<String> names = new HashSet<String>();//多態,<String>泛型,用於限制存入集合中的元素的數據類型
//add(Object element)用於向集合中添加元素,添加成功返回true,否則返回false
System.out.println(names.add("劉一"));//true
System.out.println(names.add("陳二"));//true
System.out.println(names.add("張三"));//true
System.out.println(names.add("張三"));//false
1.增強型for循環(for-each)
for(String name:names){
System.out.println(name);
}
2.迭代器遍歷
Iterator<String> iterator = names.iterator();//<String>泛型
while(iterator.hasNext()){ //hasNext()用於判斷是否含有下一個元素
System.out.println(iterator.next());//next()用於指向下一個元素
}