Java數(shù)組轉(zhuǎn)換為List的四種方式
第一種 Arrays.asList
即 Java.util 提供的 Arrays 中的 asList 方法,可以直接將一般的字符串數(shù)組以及包裝類后的結(jié)果做直接轉(zhuǎn)換。
需要注意的是 :通過這種方式得到的List 不能執(zhí)行增刪操作,否則會拋出java.lang.UnsupportedOperationException 異常,即不支持操作的異常,一般的獲取get, size等可以照常使用原
因 : Arrays.asList(str)返回值是java.util.Arrays類中一個私有靜態(tài)內(nèi)部類 java.utiil.Arrays.Arraylist,不是我們平時用的java.util.ArrayList();
適用于 只轉(zhuǎn)換后作為讀取的目標,不能用于增刪操作
示例代碼如下:
// 引用類型
Integer[] cardNumberArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
String[] strings = {"dd", "aa", "545", "ee"};
// 基本類型
int[] cardNumberArrayInt = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
// 元素轉(zhuǎn)換成功
List<Integer> integers = Arrays.asList(cardNumberArray);
List<String> list = Arrays.asList(strings);
// 出現(xiàn)了基本類型
List<int[]> ints = Arrays.asList(cardNumberArrayInt);
// 執(zhí)行了添加操作 結(jié)果出錯
integers.add(15);同時可以看的出 上面如果直接使用了 int[] 這種基本類型, 轉(zhuǎn)換時并不是我們預期的 int 而且把 int[] 認為了是一個泛型中的基本類型,泛型中不支持基本數(shù)據(jù)類型,所以如果非要使用盡量轉(zhuǎn)為包裝類,除非只做基本的運算。
asList 返回的是一個視圖,簡單來說只能看和讀取,不能執(zhí)行其他操作
總的來說這種方式泛用性不是很強
第二種 ArrayList 構造方法
將第一種 Arrays.asList 的返回值作為 arrayList 夠構造方法的入?yún)?,即可構造出可以進行增刪操的正常 list代碼如下:
// 引用類型
Integer[] cardNumberArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
String[] strings = {"dd", "aa", "545", "ee"};
List<Integer> arrayList1 = new ArrayList<>(Arrays.asList(cardNumberArray));
List<String> arrayList2 = new ArrayList<>(Arrays.asList(strings));適用于 數(shù)組轉(zhuǎn)為需要執(zhí)行增刪等正常操作的 list,同時數(shù)據(jù)量不是太大
第三種 Collections.addAll
通過 Collections.addAll(要賦值的list, 原有l(wèi)ist);
同樣是 JDK 自帶的 Collections, 先創(chuàng)建一個對應的 list 并賦予原有數(shù)組長度,然后給與賦值Collections.addAll() 會將數(shù)組中的元素轉(zhuǎn)為二進制,然后添加到List中。這種方法 效率相對較高
示例代碼如下:
// 引用類型
Integer[] cardNumberArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
List arrayList = new ArrayList<>(cardNumberArray.length);
Collections.addAll(arrayList, cardNumberArray);第四種 JDK8 特性 Stream
JDK 1.8 支持的 基本類型轉(zhuǎn)換 int[],long[],double[]
不支持的 short[ ],byte[ ],char[]
示例代碼如下:
// 基本類型
int[] cardNumberArrayInt = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
List<Integer> collect1 = Arrays.stream(cardNumberArrayInt).boxed().collect(Collectors.toList());其他支持的 long[] 以及 double[] 與上面類似
同樣的引用類型也可以使用這種方式:
Integer[] cardNumberArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
List<Integer> collect = Arrays.stream(cardNumberArray).collect(Collectors.toList());引用類型與基礎類型相比 少了 boxed 這一過程,是一個轉(zhuǎn)包裝類的過程。對于Stream 不太熟悉的可以參考我的另一篇對 Stream 使用的描述
Java Stream map, Collectors(toMap, toList, toSet, groupingBy, collectingAndThen)等學習和使用理解及案例
到此這篇關于Java開發(fā)技巧 數(shù)組轉(zhuǎn)List的四種方式總結(jié)的文章就介紹到這了,更多相關java數(shù)組轉(zhuǎn)list內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
一文掌握spring cloud gateway(總結(jié)篇)
Spring Cloud Gateway是Spring Cloud的全新項目,該項目是基于Spring 5.0,Spring WebFlux和Project Reactor等技術開發(fā)的網(wǎng)關,它旨在為微服務架構提供一種簡單有效的統(tǒng)一的API路由管理方式,本文通過實例代碼總結(jié)介紹spring cloud gateway的相關知識,感興趣的朋友一起看看吧2024-12-12
SpringBoot在項目停止(服務停止/關閉退出)之后執(zhí)行的方法
這篇文章主要給大家介紹了SpringBoot在項目停止(服務停止/關閉退出)之后執(zhí)行的兩種方法,實現(xiàn)DisposableBean接口和使用@PreDestroy注解,文中有詳細的代碼講解,具有一定的參考價值,需要的朋友可以參考下2023-12-12
SpringBoot feign動態(tài)設置數(shù)據(jù)源(https請求)
這篇文章主要介紹了SpringBoot如何在運行時feign動態(tài)添加數(shù)據(jù)源,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2021-08-08
Springboot實現(xiàn)自定義錯誤頁面的方法(錯誤處理機制)
這篇文章主要介紹了Springboot實現(xiàn)自定義錯誤頁面的方法(錯誤處理機制),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
SpringBoot枚舉類型參數(shù)認證的實現(xiàn)代碼
項目當中經(jīng)常需要接口參數(shù)是否在一個可選的范圍內(nèi),也就是驗證類枚舉參數(shù)的需求,所以本文我們將使用SpringBoot實現(xiàn)枚舉類型參數(shù)認證,文中有詳細的代碼示例,需要的朋友可以參考下2023-12-12

