見ます:
私が持っているint
要素を持つ配列を0
。私はそれらの要素を削除し、私の配列のサイズを減らしたいです。
私は、たとえば読んString
で配列を配列(ジャワ)から空の要素を削除し、私の場合には、それを適用します。
int[] in1 = {0, 0, 2, 0, 3};
int[] in1 = Arrays.stream(in1).filter(x -> x != 0).toArray(int[]::new);
残念ながら、私はエラーが表示されます。
この方法
toArray()
のタイプではIntStream
、引数には適用されません(int[]::new)
私の質問は以下のとおりです。
- どのように私は自分の目標を達成することができますか?
- なぜフィルタリングすることができない
int
配列と同じ方法でString
配列を?
GBlodgett:
プリミティブのためint[]
に引数を指定しないでくださいtoArray()
。
in1 = Arrays.stream(in1).filter(x -> x != 0).toArray();
また、あなたは接頭辞いない旨の通知in1
をint[]
すでに変数を定義していることから、再度、in1
ので、それが他の質問と同じように動作しない理由は、Arrays.stream(int[])
リターンIntStream
バージョンを持っているがのtoArray()
どの返しますint[]
。
使い方
Arrays.stream(new String[]{"This","", "will", "", "", "work"})
呼び出します。Arrays.stream(T[] array)
これは、:
シーケンシャルを返し
Stream
、そのソースとして指定された配列と。
またはStream<String>
。次に、使用してtoArray()
からStream
クラスが呼び出すされます。この受け入れバージョン、IntFunction
特定のタイプに変換しますこれを、Array
。(toArray()
からの引数を受け付けない方法Stream
戻りますObject[]
)