Set接口的常用方法
Set集合由Set接口和Set接口的實現類組成的。Set接口繼承了Collection接口,因此包含Collection接口的所有方法。Set接口中的常用方法如下圖:
由於Set集合中不允許存在重復值,因此可以使用Set集合中的addAll()方法,將Collection集合添加到Set集合中並除掉重復值。
Set接口的實現類
要使用Set集合,通常情況下需要聲明為Set類型,然后通過Set接口的實現類來實例化。Set接口的實現類常用的有HashSet和TreeSet類。語法格式如下:
Set<String>collSet=new HashSet<String>();
Set<String>collSet2=new TreeSet<String>();
由於Set集合中的對象是無序的,遍歷Set集合的結果與插入Set集合的順序並不相同。

package org.hanqi.array; import java.util.*; public class Test2 { public static void main(String[] args) { // int i; // int[]m=new int[5]; // set<int>d= //哈希 System.out.println("TreeSet"); Set<String>s=new HashSet<String>(); HashSet<String>s1=new HashSet<String>(); if(s.add("a")) { System.out.println("保存a成功"); } s.add("a"); s.add("b"); s.add("c"); s.add("d"); s.add("e"); s.add("f"); s.add("g"); s.addAll(null); if(!s.add("a")) { System.out.println("保存a失敗"); } for(String t:s) { System.out.println(t+" "); } if(s.remove("k")) { System.out.println("移除成功"); } else { System.out.println("移除失敗"); } System.out.println("s的size"+s.size()); Iterator<String>it=s.iterator(); while(it.hasNext()) { String t=it.next(); if(t.equals("c")) { it.remove(); } else { System.out.println(t); } } System.out.println("s的size"+s.size()); System.out.println("TreeSet"); Set<String>s2=new TreeSet<String>(); s2.add("b"); s2.add("a"); s2.add("c"); s2.add("g"); s2.add("e"); s2.add("f"); s2.add("d"); for(String t:s2) { System.out.println(t+" "); } } }
HashSet可以保存null,TreeSet不可以保存null,並且內部調用了TreeMap。
Map接口的常用方法
Map接口提供了將鍵映射到值的對象。一個映射不能包含重復的鍵;每個鍵最多只能映射一個值。Map接口中同樣提供了集合的常用方法,如clear()、isEmpty()、size()等除此之外還包括下圖所示的常用方法
由於Map集合中的元素是通過key、value進行存儲的,要獲取集合中指定的key值或value值,需要先通過相應的方法獲取key集合或value集合,再遍歷key集合或value集合獲取指定值。
Map接口的實現類
Map接口常用的實現類有HashMap和TreeMap。通常建議使用HashMap實現類實現Map集合,因為由HashMap類實現的Map集合對於添加和刪除映射關系效率更高。HashMap是基於哈希表的Map接口實現的,HashMap通過哈希碼對其內部的映射關系進行快速查找;由HashMap類實現的Map集合對於添加或刪除映射關系效率較高;而TreeMap中的映射關系存在一定的順序,如果希望Map集合中的對象存在一定的順序,應該使用TreeMap類實現Map集合。
1.HashMap類
該類基於哈希表的 Map接口的實現,此實現提供所有可選映射操作,並允許使用null值和null鍵,但必須保證鍵的唯一性。 HashMap通過哈希碼對其內部的映射關系進行快速查找。此類不保證映射的順序,特別是不保證該順序恆久不變。
2.TreeMap類
該類不僅實現了Map接口,還實現了java.util.SortedMap接口,因此集合中的映射關系具有一定的順序。但在添加、刪除和定位映射關系上,TreeMap類比HashMap類的性能差一些。由於TreeMap類實現的Map集合中的映射關系是根據鍵對象按照一定的順序排列的,因此不允許鍵對象是null。
可以通過HashMap類實例化Map集合,當需要順序輸出時,再創建一個完成相同映射關系的TreeMap類實例。

package org.hanqi.array; import java.util.*; public class Test3 { public static void main(String[] args) { Map<String, String>m=new HashMap<String, String>(); m.put("0533", "淄博"); m.put("0531", "濟南"); m.put("0532", "青島"); System.out.println("長度="+m.size()); m.put("0534", "青島");//值可以重復,鍵不能重復 m.put(null, null); //長度 System.out.println("長度="+m.size()); //取出 System.out.println("0533="+m.get("0533")); //key是否存在 if(m.containsKey("0533")) { System.out.println("key 0533 已存在"); } //value是否存在 if(m.containsValue("淄博")) { System.out.println("value 淄博 存在"); } //遍歷 for(String k:m.keySet()) { System.out.println(k+"="+m.get(k)); } } }