1. 程式人生 > >java集合:Collection和Map的介紹

java集合:Collection和Map的介紹

Collection集合://java.util.Collection        

         List介面:    List集合包括List介面以及List介面的所有實現類。List集合中的元素允許重複,元素的順序就是插入的順序

         List介面常用的實現類:  ArrayList 和 LinkedList

Ø  ArrayList類:實現了可變的陣列允許儲存所有元素,包括null,並可以根據索引位置對集合進行快速的隨機訪問;缺點是向指定的索引位置插入物件或刪除物件的速度較慢。

Ø  LinkedList類採用連結串列結構儲存物件。這種結構的有點是便於向集合中插入和刪除物件,需要向集合中插入物件,刪除物件時,使用LinkedList類實現List集合的效率較高,但對於隨機訪問集合中的物件,使用LinkedList類實現List集合的效率較低。

Set介面:set集合中的物件不按特定的方式排序,只是簡單地把物件加入集合中,但SET集合中不能包含重複物件,set集合有set介面和set介面的實現類組成。Set介面繼承了Collection介面,因此包含Collection介面的多有方法。

Set介面常實現的類有: Hashset 和 TreeSet類

Ø  HashSet類實現Set介面,由雜湊表(實際上是hashmap例項)支援。它不保證Set迭代順序,特別是他不保證該順序是恆久不變的,此類允許為空元素

Ø  TreeSet類不僅實現了Set介面,還實現了java.util.SortedSet介面,Treeset類實現的Set集合在遍歷集合是時是按。照自然順序遞增排序,也可以按照指定比較器遞增排序

Map集合:

         Map介面提供了將Key對映到value的物件,一個key只能對映一個value,且key不能重複

         Map介面常用的實現類有HashMap和TreeMap, 一般情況建議使用HashMap類實現Map集合,因為HashMap類實現的Map集合新增和刪除對映關係效率高。

Ø  HashMap類是基於雜湊表的Map介面的實現 ,次實現提供所有可選的對映操作,並允許使用NULL值和null鍵,但必須保證鍵的唯一性,HashMap通過雜湊表對其內部的對映關係進行快速查詢。此類不保證對映的順序,並且不保證順序恆久不變。

Ø  TreeMap類不僅實現了Map介面,還實現了java.util.SortedMap介面,集合的對映關係具有一定順序,但在新增、刪除和定位關係時候,Treemap比Hashmap類效能差。由於Treemap類實現的Map集合中的對映關係是根據鍵物件按照一定的順序排列,因此不允許鍵物件是null

ArrayList使用的方法

import java.util.*;
public class ArrayListDemo {
public static void main(String[] args) {
List<String> al = new ArrayList<String>();
al.add("aaa");
al.add("bbb");
al.add("ccc");
System.out.println("集合的大小是:"+al.size());//會輸出3
//用Iterator遍歷
Iterator it = al.iterator();
while(it.hasNext()){
String str = (String)it.next();//由於it.next返回的是物件,必須強轉
System.out.println(str);
}
}
}

HashMap使用的方法:

public class HashMapDemo {
public static void main(String[] args) {
Map<String,String> hm = new HashMap<String,String>();
hm.put("a", "123");
hm.put("b", "456");
hm.put("c", "789");
System.out.println(hm);//列印:{b=456, c=789, a=123}

//獲取鍵 -- 值
Set<Entry<String,String>> set =  hm.entrySet();
Iterator<Entry<String, String>> it = set.iterator();
while(it.hasNext()){
Entry<String, String> str = it.next();
System.out.println("鍵:"+str.getKey()+" 值:"+str.getValue());
}
}
}