java - 關(guān)于將Array轉(zhuǎn)換成ArrayList的警告
問(wèn)題描述
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 };// 輸出測(cè)試數(shù)組System.out.println('測(cè)試的數(shù)組為:' + Arrays.toString(arr));// 通過(guò)下角標(biāo)訪問(wèn)元素,數(shù)組的下角標(biāo)是從0開始的System.out.println('通過(guò)數(shù)組的下角標(biāo)訪問(wèn)元素,元素的下角標(biāo)從0開始,下角標(biāo)為0的元素是:' + arr[0]);// 將Array 轉(zhuǎn)換成 ArraylistArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr)); }}
問(wèn)題解答
回答1:asList 是個(gè)泛型,可變參數(shù)的函數(shù),所以傳入數(shù)組的時(shí)候,這個(gè)數(shù)組如果是基本類型數(shù)據(jù),會(huì)被當(dāng)作一個(gè)對(duì)象處理,題中就是 int[]。如果數(shù)據(jù)定義成 Integer[] 的,在 asList 的時(shí)候會(huì)被當(dāng)作多個(gè)可變參數(shù)展開。
另外一個(gè)問(wèn)題在于,就算是 Integer[],它轉(zhuǎn)換之后與 ArrayList<String> 也存在泛型類型不匹配的問(wèn)題。在 Java8 中用 stream 可以很方便的轉(zhuǎn)換過(guò)來(lái),之前的 Java 版可以用循環(huán),這里給你一個(gè) Stack Overflow 上的答案
回答2:// 聲明數(shù)組int[] arr = { 1, 10, 8 };// 輸出測(cè)試數(shù)組System.out.println('測(cè)試的數(shù)組為:' + Arrays.toString(arr));// 通過(guò)下角標(biāo)訪問(wèn)元素,數(shù)組的下角標(biāo)是從0開始的System.out.println('通過(guò)數(shù)組的下角標(biāo)訪問(wèn)元素,元素的下角標(biāo)從0開始,下角標(biāo)為0的元素是:' + arr[0]);// 將Array 轉(zhuǎn)換成 ArraylistList<int[]> ss = Arrays.asList(arr);ArrayList<String> arrayList = new ArrayList<String>();
List<int[]>不能自動(dòng)轉(zhuǎn)ArrayList<String>
建議統(tǒng)一數(shù)據(jù)類型, int[] arr = { 1, 10, 8 };換成 String[] arr = { '1', '10', '8' };
// 聲明數(shù)組String[] arr = { '1', '10', '8' };// 輸出測(cè)試數(shù)組System.out.println('測(cè)試的數(shù)組為:' + Arrays.toString(arr));// 通過(guò)下角標(biāo)訪問(wèn)元素,數(shù)組的下角標(biāo)是從0開始的System.out.println('通過(guò)數(shù)組的下角標(biāo)訪問(wèn)元素,元素的下角標(biāo)從0開始,下角標(biāo)為0的元素是:' + arr[0]);// 將Array 轉(zhuǎn)換成 ArraylistArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));
相關(guān)文章:
1. docker - 如何修改運(yùn)行中容器的配置2. 關(guān)于docker下的nginx壓力測(cè)試3. 為什么我ping不通我的docker容器呢???4. nignx - docker內(nèi)nginx 80端口被占用5. Span標(biāo)簽6. redis啟動(dòng)有問(wèn)題?7. angular.js - webpack build后的angularjs路由跳轉(zhuǎn)問(wèn)題8. SessionNotFoundException:會(huì)話ID為null。調(diào)用quit()后使用WebDriver嗎?(硒)9. java - Spring MVC無(wú)法識(shí)別Controller導(dǎo)致返回的結(jié)果是404?10. java - Collections類里的swap函數(shù),源碼為什么要新定義一個(gè)final的List型變量l指向傳入的list?
