成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Java將數(shù)組轉(zhuǎn)成List的方法-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)Java將數(shù)組轉(zhuǎn)成List的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),納雍企業(yè)網(wǎng)站建設(shè),納雍品牌網(wǎng)站建設(shè),網(wǎng)站定制,納雍網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,納雍網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

通過 java.util.Arrays.asList()將 Array 轉(zhuǎn)換成 List

Arrays 類有一個方便的方法asList,可以幫助轉(zhuǎn)換任務(wù),下面是語法:

public static <T> List<T> asList(T... a)

注意:參數(shù)不一定必須是數(shù)組,可變參數(shù)也可以。它可以創(chuàng)建一個lis

public class Test {
   public static void main(String[] args) {
      List<String> myList = Arrays.asList("Apple");
   }
}

以上代碼將穿件一個包含一個元素"Apple"的集合。我們也可以這樣做:

public class Test {
   public static void main(String[] args) {
      List<String> myList = Arrays.asList("Apple", "Orange");
   }
}

這將生成一個包含兩個元素"Apple","Orange"的集合

因為這是一個可變參數(shù)。我們可以傳遞一個數(shù)組,數(shù)組元素被認(rèn)定為參數(shù),例子:

public class Test {
   public static void main(String[] args) {
      String[] myArray = { "Apple", "Banana", "Orange" };
      List<String> myList = Arrays.asList(myArray);
      for (String str : myList) {
         System.out.println(str);
      }
   }
}

這樣,一個String集合被創(chuàng)建出來了。數(shù)組myArray被添加進去了。myList 集合有三個元素,一下是輸出:

Apple
Banana
Orange

陷阱

這個方法有一些問題,傳遞進去的數(shù)組必須是一個對象數(shù)組,而不能是一個基本類型數(shù)組。比如:

public class Test {
   public static void main(String[] args) {
      int[] myArray = { 1, 2, 3 };
      List myList = Arrays.asList(myArray);
      System.out.println(myList.size());
   }
}

代碼輸出是1。為什么呢?因為asList方法期望一個對象的可變參數(shù),但是傳遞進去的參數(shù)是一個基本類型數(shù)組,它創(chuàng)建了一個數(shù)組集合。所以該集合的為唯一元素是myArray。因此 myList.get(0) 將返回與myArray同樣的對象。

asList()創(chuàng)建的對象是固定大小的

asList()方法返回的list對象是固定大小的,不能容納更多的元素,比如:

public class Test {
   public static void main(String[] args) {
      String[] myArray = { "Apple", "Banana", "Orange" };
      List<String> myList = Arrays.asList(myArray);
      myList.add("Guava");
   }
}

輸出如下:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(AbstractList.java:148)
    at java.util.AbstractList.add(AbstractList.java:108)
    at Test.main(Test.java:8)

因為myList是固定長度的,不能添加更多元素。

因為該方法返回的List對象不是java.util包下面的ArrayList,而是Arrays內(nèi)部的ArrayList類型。改類沒有實現(xiàn)add,revmove,clear方法,所以任何對改集合結(jié)構(gòu)修改的調(diào)用都將失敗。

將基本數(shù)組類型轉(zhuǎn)換成List

正如上面提到的。傳遞一個基本類型數(shù)組到asList方法不生效,一個不引入第三方庫的解決辦法是通過Java8 的流,例子如下:

public class Test {
   public static void main(String[] args) {
      int[] intArray = { 5, 10, 21 };
      List myList = Arrays.stream(intArray).boxed()
            .collect(Collectors.toList());
   }
}

數(shù)組的每一個元素都被從int轉(zhuǎn)換成了Integer類型(裝箱),數(shù)組就被轉(zhuǎn)成了List類型。

將數(shù)組轉(zhuǎn)換成允許添加元素的List

正如上面陷阱部分提到的,Arrays.asList()方法不支持添加或者移除元素。如果你不想這樣,下面是可選方案:

public class Test {
   public static void main(String[] args) {
      String[] myArray = { "Apple", "Banana", "Orange" };
      List<String> myList = new ArrayList<String>(Arrays.asList(myArray));
      myList.add("Guava");
   }
}

這段代碼顯式地創(chuàng)建了一個新的ArrayList對象,然后將Arrays.asList的結(jié)果添加進去了。因為我們創(chuàng)建了一個ArrayList。所以沒有添加移除限制,上面的代碼執(zhí)行結(jié)束前有四個元素。不要指望代碼執(zhí)行時拋出異常。

自己實現(xiàn)Array組轉(zhuǎn)換成List

有時候解決問題,使用我們自己的實現(xiàn)方案是更好的。下面是一個將java數(shù)組轉(zhuǎn)換成List的簡單例子:

public class Test {
   public static void main(String[] args) {
      String[] myArray = { "Apple", "Banana", "Orange" };
      List<String> myList = new ArrayList<String>();
      for (String str : myArray) {
         myList.add(str);
      }
      System.out.println(myList.size());
   }
}

代碼的預(yù)期輸出是3.因為邏輯執(zhí)行完集合了有3個元素。

我們代碼的負(fù)面是代碼更長了,而且我們在重復(fù)造輪子。好處就是當(dāng)我們的需求改變時,我們可以順應(yīng)自定義。比如:下面的代碼,每一個元素都被添加到list中兩次

public class Test {
   public static void main(String[] args) {
      String[] myArray = { "Apple", "Banana", "Orange" };
      List<String> myList = new ArrayList<String>();
      for (String str : myArray) {
         myList.add(str);
         myList.add(str);
      }
      System.out.println(myList.size());
   }
}

輸出是6,因為數(shù)組中的元素都被添加兩次。下面是另外一個將String數(shù)組轉(zhuǎn)換成List<Integer> 的例子:

public class Test {
   public static void main(String[] args) {
      String[] myArray = { "5", "6", "7" };
      List<Integer> myList = new ArrayList<Integer>();
      for (String str : myArray) {
         myList.add(Integer.valueOf(str));
      }
   }}

解析數(shù)組中的每個String并將其轉(zhuǎn)換為相應(yīng)的Integer。結(jié)果列表將包含所有轉(zhuǎn)換后的整數(shù)。

關(guān)于Java將數(shù)組轉(zhuǎn)成List的方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

網(wǎng)站標(biāo)題:Java將數(shù)組轉(zhuǎn)成List的方法-創(chuàng)新互聯(lián)
標(biāo)題URL:http://jinyejixie.com/article0/dcggio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、域名注冊、做網(wǎng)站、面包屑導(dǎo)航、網(wǎng)站導(dǎo)航、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
方正县| 汤阴县| 酒泉市| 本溪市| 阳江市| 德州市| 汉川市| 政和县| 滦平县| 台北市| 房山区| 剑河县| 沂南县| 长宁区| 外汇| 屏东市| 南川市| 湖州市| 台北市| 石城县| 曲麻莱县| 公安县| 崇信县| 侯马市| 古田县| 疏勒县| 定襄县| 吉水县| 肇庆市| 鹤庆县| 连云港市| 临澧县| 北流市| 金川县| 远安县| 安仁县| 长丰县| 万荣县| 剑河县| 沙洋县| 武清区|