java - 關(guān)于將Array轉(zhuǎn)換成ArrayList的警告
問題描述
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));// 通過下角標訪問元素,數(shù)組的下角標是從0開始的System.out.println('通過數(shù)組的下角標訪問元素,元素的下角標從0開始,下角標為0的元素是:' + arr[0]);// 將Array 轉(zhuǎn)換成 ArraylistArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr)); }}
問題解答
回答1:asList 是個泛型,可變參數(shù)的函數(shù),所以傳入數(shù)組的時候,這個數(shù)組如果是基本類型數(shù)據(jù),會被當作一個對象處理,題中就是 int[]。如果數(shù)據(jù)定義成 Integer[] 的,在 asList 的時候會被當作多個可變參數(shù)展開。
另外一個問題在于,就算是 Integer[],它轉(zhuǎn)換之后與 ArrayList<String> 也存在泛型類型不匹配的問題。在 Java8 中用 stream 可以很方便的轉(zhuǎn)換過來,之前的 Java 版可以用循環(huán),這里給你一個 Stack Overflow 上的答案
回答2:// 聲明數(shù)組int[] arr = { 1, 10, 8 };// 輸出測試數(shù)組System.out.println('測試的數(shù)組為:' + Arrays.toString(arr));// 通過下角標訪問元素,數(shù)組的下角標是從0開始的System.out.println('通過數(shù)組的下角標訪問元素,元素的下角標從0開始,下角標為0的元素是:' + arr[0]);// 將Array 轉(zhuǎn)換成 ArraylistList<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));// 通過下角標訪問元素,數(shù)組的下角標是從0開始的System.out.println('通過數(shù)組的下角標訪問元素,元素的下角標從0開始,下角標為0的元素是:' + arr[0]);// 將Array 轉(zhuǎn)換成 ArraylistArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));
相關(guān)文章:
1. Python從URL中提取域名2. php傳對應的id值為什么傳不了啊有木有大神會的看我下方截圖3. python - scrapy url去重4. python - Flask寫的注冊頁面,當注冊時,如果填寫數(shù)據(jù)庫里有的相同數(shù)據(jù),就報錯5. 關(guān)于mysql聯(lián)合查詢一對多的顯示結(jié)果問題6. 實現(xiàn)bing搜索工具urlAPI提交7. 數(shù)據(jù)庫 - Mysql的存儲過程真的是個坑!求助下面的存儲過程哪里錯啦,實在是找不到哪里的問題了。8. python - oslo_config9. MySQL主鍵沖突時的更新操作和替換操作在功能上有什么差別(如圖)10. 小白學python的問題 關(guān)于%d和%s的區(qū)別
