4.1 Collection,List,Set,Iterator,Map

4.1.1 Collection<E>

java.util.Collection<E>

看API

Collection中的元素個數不固定,可以任意擴充。

Collection的常用子類

  • List
  • Set
  • Queue

4.1.2 List<E>

java.util.List<E>

是Collection的子接口

List接口可以存放任意類型的數據,而且value可以重複。

List接口常用的子類:ArrayList,Vector

常用操作:

  • 判斷集合是否爲空:boolean isEmpty()
  • 查找指定對象是否存在:int indexOf(Object o),不存在返回-1
  • List<String> lst = new ArrayList<String>();
  • 元素個數:lst.size();
  • 刪除操作:lst.remove(index); //刪除之後index有變化
  • List<String> lst1 = new Vector<String>();
  • 不需要線程安全的時候,用ArrayList
ArrayList VS Vector
  ArrayList Vector
推出時間 jdk1.2 jdk1.2
性能 採用異步處理方式,性能高 採用同步處理方式,性能低
thread safe 非線程安全 線程安全

4.1.3 Set<E>

Set接口中不能放入重複元素,但是可以排序。

Set接口的常用子類

  • 散列存放:HashSet,排放無序
    [java] view plaincopy在CODE上查看代碼片派生到我的代碼片
    1. Set<String> s = new HashSet<String>();  
    2. s.add("A");  
    3. s.add("B");  
    4. s.add("C");  
    5. s.add("D");  
    6. s.add("E");  
    7. s.add("F");  
    8. System.out.println(s.contains("E"));  
    9. System.out.println(s);  
  • 有序存放:TreeSet
    [java] view plaincopy在CODE上查看代碼片派生到我的代碼片
    1. Set<String> s = new TreeSet<String>();  
    2. s.add("A");  
    3. s.add("B");  
    4. s.add("C");  
    5. s.add("D");  
    6. s.add("E");  
    7. s.add("F");  

4.1.4 Iterator<E>

集合輸出的標準做法是使用Iterator接口。

操作原理:

Iterator是專門的迭代輸出接口,迭代輸出就是將元素一個一個進行判斷,判斷其是否有內容,如果有則把內容取出

方法:

  • bool hasNext(); 如果還有元素可以迭代,返回true
  • E next(); 返回迭代的下一個元素
  • void remove(); 從迭代器指向的Collection中移除迭代器返回的最後一個元素。
    [java] view plaincopy在CODE上查看代碼片派生到我的代碼片
    1. List<String> lists = new ArrayList<String>();  
    2. lists.add("A");  
    3. lists.add("B");  
    4. lists.add("C");  
    5. lists.add("D");  
    6. lists.add("E");  
    7. Iterator<String> iter = lists.iterator();  
    8. while (iter.hasNext()){  
    9.     String str = iter.next();  
    10.     if("A".equals(str)){  
    11.         iter.remove();  
    12.     } else{  
    13.         System.out.print(str + " ");  
    14.     }  
    15. }  

結果打印:B C D E 4

“A”被從lists中刪除了

  • 迭代輸出的時候,不能用collection去刪除元素,比如說lists.remove(3); ==> 錯誤

4.1.5 Map<T1,T2>

保存形式

key->value, key不允許重複

常用子類:

HashMap:無序排放,value不可重複

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. Map<String,String> map = new HashMap<String, String>();  
  2. map.put("k1","v1");  
  3. map.<span style="background-color: rgb(255, 255, 153);">put</span>("k2","v2");  
  4. map.put("k3","v3");  
  5. String str = map.<span style="background-color: rgb(255, 255, 153);">get</span>("k3");  
  6. if(map.<span style="background-color: rgb(255, 255, 153);">containsKey</span>("k1")){  
  7.     System.out.println("contains key");  
  8. }  
  9. if(map.<span style="background-color: rgb(255, 255, 153);">containsValue</span>("v3")){  
  10.     System.out.println("contains value");  
  11. }  
  12. Set<String> keySet = map.<span style="background-color: rgb(255, 255, 153);">keySet</span>();  
  13. Iterator<String> iter = keySet.iterator();  
  14. while (iter.hasNext()){  
  15.     System.out.println(iter.next());  
  16. }  
  17.   
  18. Collection<String> lstValues = map.<span style="background-color: rgb(255, 255, 153);">values</span>();  
  19. iter = lstValues.iterator();  
  20. while (iter.hasNext()){  
  21.     System.out.println(iter.next());  
  22. }  

Hashtable:無序排放,value可以重複

發佈了50 篇原創文章 · 獲贊 54 · 訪問量 51萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章