談談 數組和集合

一、數組聲明瞭它容納的元素的類型,而集合不聲明。

       二、數組是靜態的,一個數組實例具有固定的大小,一旦創建了就無法改變容量了。而集合是可以動態擴展容量,可以根據需要動態改變大小,集合提供更多的成員方法,能滿足更多的需求。

       三、數組不論是效率還是類型檢查都是最好的。

1.數組是大小固定的,一旦創建無法擴容;集合大小不固定,

2.數組的存放的類型只能是一種,集合存放的類型可以不是一種(不加泛型時添加的類型是Object);

3.數組是java語言中內置的數據類型,是線性排列的,執行效率或者類型檢查(不懂),都是最快的.

數組Array和集合的區別:

(1)數組是大小固定的,並且同一個數組只能存放類型一樣的數據(基本類型/引用類型)

(2)JAVA集合可以存儲和操作數目不固定的一組數據。

 (3)若程序時不知道究竟需要多少對象,需要在空間不足時自動擴增容量,則需要使用容器類庫,array不適用。

聯繫:使用相應的toArray()和Arrays.asList()方法可以回想轉換。

一.集合的體系結構:

List、Set、Map是這個集合體系中最主要的三個接口。

 List和Set繼承自Collection接口。 Map也屬於集合系統,但和Collection接口不同。

Set不允許元素重複。HashSet和TreeSet是兩個主要的實現類。Set

 只能通過遊標來取值,並且值是不能重複的。

List有序且允許元素重複。ArrayList、LinkedList和Vector是三個主要的實現類。

 ArrayList 是線程不安全的, Vector 是線程安全的,這兩個類底層都是由數組實現的 LinkedList 是線程不安全的,底層是由鏈表實現的

Map

 是鍵值對集合。其中key列就是一個集合,key不能重複,但是value可以重複。 HashMap、TreeMap和Hashtable是Map的三個主要的實現類。 HashTable 是線程安全的,不能存儲 null 值

 HashMap 不是線程安全的,可以存儲 null

二.List和ArrayList的區別

  1.List是接口,List特性就是有序,會確保以一定的順序保存元素.

  ArrayList是它的實現類,是一個用數組實現的List.

  Map是接口,Map特性就是根據一個對象查找對象.

  HashMap是它的實現類,HashMap用hash表實現的Map,就是利用對象的hashcode(hashcode()是Object的方法)進行快速散列查找.(關於散列查找,可以參看<<數據結構>

  2.一般情況下,如果沒有必要,推薦代碼只同List,Map接口打交道.

  比如:List

 list = new ArrayList();

  這樣做的原因是list就相當於是一個泛型的實現,如果想改變list的類型,只需要:

  List

 list = new LinkedList();//LinkedList也是List的實現類,也是ArrayList的兄弟類

  這樣,就不需要修改其它代碼,這就是接口編程的優雅之處.

  另外的例子就是,在類的方法中,如下聲明

  private void doMyAction(List

 list){}

  這樣這個方法能處理所有實現了List接口的類,一定程度上實現了泛型函數.

  3.如果開發的時候覺得ArrayList,HashMap的性能不能滿足你的需要,可以通過實現List,Map(或者Collection)來定製你的自定義類.

三。圖示說明

 注:圖參來之http://www.cnblogs.com/xiaoqv/archive/2011/11/24/2262142.html

int[] m = { 1, 2, 3 };

String[] strings = { "aaa", "bbb" };

List<String> list = new ArrayList<String>();

List<Integer> lists = new ArrayList<Integer>();

List<Map<String, Object>> list2 = new ArrayList<Map<String,Object>>();

List<City> listcity = new ArrayList<City>();

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章