數組:數組是java語言內置的數據類型,他是一個線性的序列,所有可以快速訪問其他的元素,數組和其他語言不同,當你創建了一個數組時,他的容量是不變的,而且在生命周期也是不能改變的,還有JAVA數組會做邊界檢查,如果發現有越界現象,會報RuntimeException異常錯誤,所有不用擔心和C和C++一樣不做邊界檢查而出現的問題,當然檢查邊界會以效率為代價,數組和其他容器體現在3個方面:1.效率2.類型識別3.可以持有primitives。
集合: JAVA還提供其他容器,list,map,set,他們處理對象的時候就好像這些對象沒有自己的類型一樣,而是直接歸根於Object,這樣只需要創建一個容器,把對象放進去,取出時轉換成自己的類型就行了,
ArrayList:JAVA包里有一個java.util.ArrayLisy的類,他包括可以用以static的工具方法,其中最基本的4個方法:1用來比較2個數組是否相等的eques()2用來填充數組的fill()3用來排序數組的sort()4以及用於在一個已經排序的數組中查找元素的binarySearch()。
這些方法都是對primitives和Object進行了重載,此外還有一個asList()方法,它接受一個數組,然后把它轉成一個List容器
此為java標准庫還提供了一個 System.arraycopy();的靜態方法,能夠以較快的速度拷貝數組,對primitive和Object進行了重載,要注意的是,當進行Obeject拷貝的時候,進行的是淺拷貝;
區別:
至於效率,數組無疑是高過其他容器的,因為有些容器類的實現就是基於數組的,比如ArrayList,不論是效率還是類型檢查,無疑是先考慮數組的,但是數組最大的弱點就是功能太弱小,所有才會有其他容器的出現。