一、數組與ArrayList的主要區別:效率、類型識別和primitive type。
數組([]):最高效;但是其容量固定且無法動態改變;
ArrayList:容量可動態增長;但犧牲效率;
建議:
首先使用數組,無法確定數組大小時才使用ArrayList!
1.效率:
數組擴容是對ArrayList效率影響比較大的一個因素。
每當執行Add、AddRange、Insert、InsertRange等添加元素的方法,都會檢查內部數組的容量是否不夠了,如果是,它就會以當前容量的兩倍來重新構建一個數組,將舊元素Copy到新數組中,然后丟棄舊數組,
在這個臨界點的擴容操作,應該來說是比較影響效率的。
ArrayList是Array的復雜版本
ArrayList內部封裝了一個Object類型的數組,從一般的意義來說,它和數組沒有本質的差別,甚至于
ArrayList的許多方法,如Index、IndexOf、Contains、Sort等都是在內部數組的基礎上直接調用Array的對應方法。
2.類型識別:
ArrayList存入對象時,拋棄類型信息,所有對象屏蔽為Object,編譯時不檢查類型,但是運行時會報錯。
注:jdk5中加入了對泛型的支持,已經可以在使用ArrayList時進行類型檢查。
從這一點上看來,ArrayList與數組的區別主要就是由于動態增容的效率問題了
3.ArrayList可以存任何Object,如String,Employee等,但不支持基本數據類型,除非使用wrapper。
二、數組與ArrayList的轉換(有待補充:見《corejava》110頁)
1.ArrayList轉換為數組:
ArrayList轉換String[]
ArrayList list = new ArrayList();list.add("a");list.add("b");list.add
("c");System.out.println("a="+list);String[] b=(String[])list.toArray
(new String[0]);
2.數組轉換為ArrayList(有待補充)
三、Arrays類操縱java中的數組(有待補充)
http://java.ccidnet.com/art/3737/20060627/589715_1.html
四、實現DecisionTree時對ArrayList與String[]的迷惑與解鈴(有待補充)
http://www.mysdn.cn/Java/J2SEjichulei/20060914/9172.html
(實際為數組與ArrayList的迷惑)
五、其他
1.數組和ArrayList都表示可以存一組同類型的對象;都使用下標定位和查找元素;
2.數組的定義:
int[] num=new int[10];
Employee[] staff=new Employee[100];
3.ArrayList的使用:
List lst=new ArrayList();
lst.add(employee);
4.起初并沒有Arrays類(??不記得在哪看到了,不確定),Arrays類是為了方便數組的一些常用的共同
操作而實現的。
5.ArrayList詳解:
http://my.opera.com/wujianrong/blog/index.dml/tag/ArrayList
http://blog.csdn.net/realasker/
6.J2SE 5.0中的泛型
http://www.javanb.com/j2se/1/5246.html