有序的集合,就是LinkedList,內部通過雙向鏈表實現,LinkedHashMap為基礎。
package collection.lession3;
import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
/**
* 老紫竹JAVA提高教程(3)-認識Set集合之LinkedHashSet。<br>
* <br>
* LinkedHashSet與HashSet的區別就是數據嚴格按照插入的順序存放。<br>
* 刪除之後會去掉那個位置,新增的數據將在集合的末尾。<br>
* HashSet 內部使用HashMap實現<br>
* 而LinkedHashSet內部使用LinkedHashMap實現。
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
public class Lession3 {
public static void main(String[] args) {
test(new HashSet<Integer>());
test(new LinkedHashSet<Integer>());
}
public static void test(Set<Integer> set) {
System.out.println(set.getClass().getName());
// 增加10個數據
for (int i = 100; i <= 110; i++) {
set.add(i);
}
// 看看裡面數據的情況
showSet(set);
// 刪除一個數據
set.remove(101);
// 看看刪除後的情況
showSet(set);
// 增加三個數據,看結果
set.add(98);
set.add(101);
set.add(118);
showSet(set);
}
/**
* 顯示Set裡面的數據。
*
* @param set
*/
private static void showSet(Set<Integer> set) {
System.out.println(Arrays.toString(set.toArray(new Integer[0])));
}
}
測試:
嘗試按照自己的意願,控制LinkedHashSet裡面數據的順序,比如刪除第一個,再加入 ,則其出現在了末尾了。這個很像排隊買票,一旦你中途退出了,就只能重新排隊。是不 允許加塞的。
總結:
當我們處理集合,有想掌握其順序的時候,可以考慮這個,當然List也是很好的選擇 ,不過Hash算法,在查找數據的時候,比List性能要高的。