1. 程式人生 > 其它 >Java中集合和陣列的區別

Java中集合和陣列的區別

一、基本介紹

1、總的來說

區別:

陣列特點:大小固定,只能儲存相同資料型別的資料

集合特點:大小可動態擴充套件,可以儲存各種型別的資料

2、具體說

區別:

陣列和集合都是java中的容器。

1、陣列聲明瞭它容納的元素的型別,而集合不宣告。

2、陣列是靜態的,一個數組例項具有固定的大小,一旦建立了就無法改變容量了,而且生命週期也是不能改變的,還有陣列會做邊界檢查,如果發現有越界現象,會報RuntimeException異常錯誤,當然檢查邊界會以效率為代價。

而集合的長度是可變的,可以動態擴充套件容量,可以根據需要動態改變大小,集合提供更多的成員方法,能滿足更多的需求。

3、陣列的存放的型別只能是一種,Object陣列可以存多種型別;集合存放的型別可以不是一種,只可以儲存物件,也可以儲存基本資料型別,但必須是基本型別的包裝類(不加泛型時新增的型別是Object)。

集合可以存放不同型別的引用型別,因為存入集合的元素都被轉化成了Object型別,之後再引用集合中的型別需要強制型別轉換,這就導致了集合的型別不安全,以及型別轉化的效能損耗

4、陣列是java語言中內建的資料型別,是線性排列的陣列,所以可以快速訪問其他的元素。

3、集合和陣列之間的轉換

陣列轉換為集合:

Arrays.asList(陣列)

示例:

int[] arr = {1,3,4,6,6};

Arrays.asList(arr);

for(int i=0;i<arr.length;i++){

System.out.println(arr[i]);

}

集合轉換為陣列:

集合.toArray();

示例:

List list = new ArrayList(); list.add("a"); list.add("b"); list.toArray(); System.out.println(list.toString());

二、提高

在java中,陣列不能放不同資料型別的值。

多型

定義陣列型別的時候定義為父類,而存進陣列為父類的子類


public class test2 {
  public static void main(String args[]) {
    father []a = new father[2];
    a[0] = new son();
    a[1] = new son2();
  }
}
class father{
  int i = 0;
}
class son extends father{
  int x = 0;
}
class son2 extends father{
  int y = 0;
}