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開(kāi)始的System.out.println('通過(guò)數(shù)組的下角標(biāo)訪問(wèn)元素,元素的下角標(biāo)從0開(kāi)始,下角標(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ù)組如果是基本類(lèi)型數(shù)據(jù),會(huì)被當(dāng)作一個(gè)對(duì)象處理,題中就是 int[]。如果數(shù)據(jù)定義成 Integer[] 的,在 asList 的時(shí)候會(huì)被當(dāng)作多個(gè)可變參數(shù)展開(kāi)。
另外一個(gè)問(wèn)題在于,就算是 Integer[],它轉(zhuǎn)換之后與 ArrayList<String> 也存在泛型類(lèi)型不匹配的問(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開(kāi)始的System.out.println('通過(guò)數(shù)組的下角標(biāo)訪問(wèn)元素,元素的下角標(biāo)從0開(kāi)始,下角標(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ù)類(lèi)型, 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開(kāi)始的System.out.println('通過(guò)數(shù)組的下角標(biāo)訪問(wèn)元素,元素的下角標(biāo)從0開(kāi)始,下角標(biāo)為0的元素是:' + arr[0]);// 將Array 轉(zhuǎn)換成 ArraylistArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));
相關(guān)文章:
1. dockerfile - [docker build image失敗- npm install]2. html5 - Chrome訪問(wèn)本地文件緩慢3. python - django models 為生成的html元素添加樣式。4. angular.js - angular2 有什么cool的loading組件么?5. javascript - 關(guān)于圣杯布局的一點(diǎn)疑惑6. Python 子類(lèi)能否覆蓋全局函數(shù)?7. 為什么我寫(xiě)的PHP不行8. javascript - 根據(jù)不同數(shù)據(jù)顯示不同內(nèi)容9. android - 百度地圖加載完成監(jiān)聽(tīng)10. javascript - 請(qǐng)問(wèn)下面代碼中的...是擴(kuò)展運(yùn)算符還是操作運(yùn)算符?這樣寫(xiě)是什么意思?

網(wǎng)公網(wǎng)安備