第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將包含整數(shù)的ArrayList轉(zhuǎn)換為原始int數(shù)組?

如何將包含整數(shù)的ArrayList轉(zhuǎn)換為原始int數(shù)組?

MM們 2019-10-16 13:09:13
如何將包含整數(shù)的ArrayList轉(zhuǎn)換為原始int數(shù)組?我試圖用下面的代碼將包含Integer對象的ArrayList轉(zhuǎn)換為原始int[],但是它會引發(fā)編譯時錯誤。可以用Java進行轉(zhuǎn)換嗎?List<Integer> x =  new ArrayList<Integer>(); int[] n = (int[])x.toArray(int[x.size()]);
查看完整描述

3 回答

?
千巷貓影

TA貢獻1829條經(jīng)驗 獲得超7個贊

你可以轉(zhuǎn)換,但我不認為有什么可以自動完成的:

public static int[] convertIntegers(List<Integer> integers){
    int[] ret = new int[integers.size()];
    for (int i=0; i < ret.length; i++)
    {
        ret[i] = integers.get(i).intValue();
    }
    return ret;}

(請注意,這將引發(fā)NullPointerException,如果integers或者它中的任何元素都是null.)

編輯:根據(jù)注釋,您可能希望使用列表迭代器來避免使用列表(如LinkedList:

public static int[] convertIntegers(List<Integer> integers){
    int[] ret = new int[integers.size()];
    Iterator<Integer> iterator = integers.iterator();
    for (int i = 0; i < ret.length; i++)
    {
        ret[i] = iterator.next().intValue();
    }
    return ret;}



查看完整回答
反對 回復 2019-10-17
?
HUX布斯

TA貢獻1876條經(jīng)驗 獲得超6個贊

如果你用爪哇-8還有另外一種方法。

int[] arr = list.stream().mapToInt(i -> i).toArray();

它所做的是:

  • 得到一個

    Stream<Integer>

    從名單上
  • 獲得

    IntStream

    通過將每個元素映射到自身(標識函數(shù)),將

    int

    每個人持有的價值

    Integer

    對象(自Java 5以來自動完成)
  • 的數(shù)組

    int

    打電話

    toArray

您也可以顯式地調(diào)用intValue通過方法參考,即:

int[] arr = list.stream().mapToInt(Integer::intValue).toArray();

還值得一提的是,你可以得到一個NullPointerException如果你有null列表中的參考。通過向流管道添加過濾條件可以很容易地避免這種情況,如下所示:

 //.filter(Objects::nonNull) also worksint[] arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray();

例子:

List<Integer> list = Arrays.asList(1, 2, 3, 4);int[] arr = list.stream().mapToInt(i -> i).toArray(); //[1, 2, 3, 4]list.set(1, null); 
//[1, null, 3, 4]arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray(); //[1, 3, 4]




查看完整回答
反對 回復 2019-10-17
?
侃侃無極

TA貢獻2051條經(jīng)驗 獲得超10個贊

ApacheCommons有一個ArrayUtils類,它有一個用于Primitive()的方法,它就是這樣做的。

import org.apache.commons.lang.ArrayUtils;...
    List<Integer> list = new ArrayList<Integer>();
    list.add(new Integer(1));
    list.add(new Integer(2));
    int[] intArray = ArrayUtils.toPrimitive(list.toArray(new Integer[0]));

但是,正如Jon所展示的,獨立完成這個任務非常容易,而不是使用外部庫。



查看完整回答
反對 回復 2019-10-17
  • 3 回答
  • 0 關注
  • 569 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號