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

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

如何從整型數(shù)組 (Java) 中刪除空元素?

如何從整型數(shù)組 (Java) 中刪除空元素?

炎炎設計 2022-09-14 17:55:38
我有一個包含元素的數(shù)組。我想刪除這些元素并減小數(shù)組的大小。int0我在從 Array(Java) 中刪除空元素中閱讀了數(shù)組的示例,并將其應用于我的情況:Stringint[] in1 = {0, 0, 2, 0, 3}; int[] in1 = Arrays.stream(in1).filter(x -> x != 0).toArray(int[]::new);很遺憾,我收到一個錯誤:類型中的方法不適用于參數(shù)toArray()IntStream(int[]::new)我的問題是:我怎樣才能實現(xiàn)我的目標?為什么我不能像過濾數(shù)組一樣過濾我的數(shù)組?intString
查看完整描述

3 回答

?
小怪獸愛吃肉

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

對于基元,不要向 提供參數(shù):int[]toArray()

in1 = Arrays.stream(in1).filter(x -> x != 0).toArray();

另請注意,您不再使用前綴,因為您已經(jīng)定義了變量in1int[]in1

它的工作方式與另一個問題不同的原因是,Arrays.stream(int[]) 返回了 一個具有 toArray() 版本的版本,該版本返回一個 .IntStreamint[]

Arrays.stream(new String[]{"This","", "will", "", "", "work"})

將調(diào)用數(shù)組流(T[] 數(shù)組),它:

返回以指定數(shù)組作為其源的順序。Stream

或 .然后使用來自類將調(diào)用版本,該版本接受 ,該版本會將其轉換為特定類型的 .(不接受來自任何參數(shù)的方法返回Stream<String>toArray()StreamIntFunctionArraytoArray()StreamObject[])


查看完整回答
反對 回復 2022-09-14
?
慕桂英3389331

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

眾所周知,基元類型在java中不是對象,對于它們,類中有重載方法。假設這里只是考慮.如果我們通過,那么被調(diào)用并返回對象。如果你去看類,那么你會發(fā)現(xiàn)只有一個方法,它不接受任何參數(shù)。stream()Arraysintint[]stream(int[] array)IntStreamIntStreamtoArray

所以,我們不能做.toArray(int[]::new)

int[] in1 = {0, 0, 2, 0, 3}; int[] in2 = Arrays.stream(in1).filter(x -> x != 0).toArray();

但是對于任何引用類型數(shù)組,我們可以轉換為特定類型。例如

String[] str2 = {"a","b",null,"c"};
    String[] strArr = Arrays.stream(str2).filter(i -> !=null).toArray(String[]::new);    for (String string : strArr) {
        System.out.println(string);
    }

在引用類型的情況下,泛型方法從類中被調(diào)用并產(chǎn)生,現(xiàn)在接口有兩個重載。如果我們使用streamArraysStream<T>StreamtoArray()

  1. toArray()然后屈服,在這種情況下我們需要種姓。Object[]

  2. toArray(IntFunction<A[]> generator)然后給我們,其中是任何引用類型。A[]A

請參閱下面的示例

package test;import java.util.Arrays;public class EliminateZeroFromIntArray {public static void main(String[] args) {    int[] in1 = {0, 0, 2, 0, 3};    int[] in2 = Arrays.stream(in1).filter(x -> x != 0).toArray();    for (int i : in2) {
        System.out.println(i);
    }

    String[] str = {"a","b",null,"c"};
    Object[] array = Arrays.stream(str).filter(i -> i !=null).toArray();    for (Object object : array) {
        System.out.println((String)object);
    }

    String[] str2 = {"a","b",null,"c"};
    String[] strArr = Arrays.stream(str2).filter(i -> i !=null).toArray(String[]::new);    for (String string : strArr) {
        System.out.println(string);
    }
}

}


查看完整回答
反對 回復 2022-09-14
?
青春有我

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

這可能不是你會發(fā)現(xiàn)的最好的版本,但是:


private int[] removeZeros(int[] array, int toRemove)

    {

        int count = 0;

        int arrayLength = array.length;


        for (int i = 0; i < array.length; i++)

        {

            if (array[i] == toRemove)

                count++;

        }


        int[] newArray = new int[arrayLength - count];

        int j = 0;

        for (int i = 0; i < array.length; i++)

        {

            if (array[i] != toRemove)

            {

                newArray[j] = array[i];

                j++;

            }

        }

        return newArray;

    }


查看完整回答
反對 回復 2022-09-14
  • 3 回答
  • 0 關注
  • 309 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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