package com.demo.array;
import java.util.ArrayList;
import java.util.Arrays;
/**
* 關(guān)于數(shù)組的演示
*
* @author Captain
*
*/
public class ArrayDemo {
public static void main(String[] args) {
// 聲明數(shù)組
int[] arr = { 1, 10, 8 };
// 輸出測試數(shù)組
System.out.println("測試的數(shù)組為:" + Arrays.toString(arr));
// 通過下角標(biāo)訪問元素,數(shù)組的下角標(biāo)是從0開始的
System.out.println("通過數(shù)組的下角標(biāo)訪問元素,元素的下角標(biāo)從0開始,下角標(biāo)為0的元素是:" + arr[0]);
// 將Array 轉(zhuǎn)換成 Arraylist
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));
}
}
業(yè)精于勤,荒于嬉;行成于思,毀于隨。
asList
是個泛型,可變參數(shù)的函數(shù),所以傳入數(shù)組的時候,這個數(shù)組如果是基本類型數(shù)據(jù),會被當(dāng)作一個對象處理,題中就是 int[]
。如果數(shù)據(jù)定義成 Integer[]
的,在 asList
的時候會被當(dāng)作多個可變參數(shù)展開。
另外一個問題在于,就算是 Integer[]
,它轉(zhuǎn)換之后與 ArrayList<String>
也存在泛型類型不匹配的問題。在 Java8 中用 stream 可以很方便的轉(zhuǎn)換過來,之前的 Java 版可以用循環(huán),這里給你一個 Stack Overflow 上的答案
// 聲明數(shù)組
int[] arr = { 1, 10, 8 };
// 輸出測試數(shù)組
System.out.println("測試的數(shù)組為:" + Arrays.toString(arr));
// 通過下角標(biāo)訪問元素,數(shù)組的下角標(biāo)是從0開始的
System.out.println("通過數(shù)組的下角標(biāo)訪問元素,元素的下角標(biāo)從0開始,下角標(biāo)為0的元素是:" + arr[0]);
// 將Array 轉(zhuǎn)換成 Arraylist
List<int[]> ss = Arrays.asList(arr);
ArrayList<String> arrayList = new ArrayList<String>();
List<int[]>不能自動轉(zhuǎn)ArrayList<String>
建議統(tǒng)一數(shù)據(jù)類型, int[] arr = { 1, 10, 8 };換成 String[] arr = { "1", "10", "8" };
// 聲明數(shù)組
String[] arr = { "1", "10", "8" };
// 輸出測試數(shù)組
System.out.println("測試的數(shù)組為:" + Arrays.toString(arr));
// 通過下角標(biāo)訪問元素,數(shù)組的下角標(biāo)是從0開始的
System.out.println("通過數(shù)組的下角標(biāo)訪問元素,元素的下角標(biāo)從0開始,下角標(biāo)為0的元素是:" + arr[0]);
// 將Array 轉(zhuǎn)換成 Arraylist
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));