変換リスト Java で int[] に
List を変換しようとしたときint[] を使用すると、List.toArray() の制限により混乱が生じることがよくあります。 Object[] を返しますが、この配列を int[] に直接キャストすることはできません。
この問題に対処するための一般的なアプローチは、質問に示されているようにループを使用することです。ただし、Java 8 では、ストリームを使用したより効率的で簡潔なソリューションが導入されています。
ストリームの使用
IntStream の導入により、Java 8 ではプリミティブ型を処理する便利な方法が提供されます。 intのような。次のコードは、List を変換する方法を示しています。ストリームを使用した int[] への変換:
int[] example1 = list.stream().mapToInt(i -> i).toArray();
// OR
int[] example2 = list.stream().mapToInt(Integer::intValue).toArray();
ログイン後にコピー
思考プロセス
- 単純な Stream#toArray は Object[] 配列を返しますが、これは望ましくありません。
- IntStream は int 用に設計された特別なストリームです
- Stream から IntStream を取得するには、mapToInt メソッドを使用します。
- mapToInt は、Integer を int にマップする ToIntFunction を受け取ります。これは、ラムダまたはメソッド参照として実装できます。
- Integer#intValue は、Integer をアンボックス化して、基礎となる int 値を取得します。
- あるいは、単純なアンボックス化を使用して、mapToInt 内のラムダを置き換えることもできます。その結果、より簡潔な例 1 が得られます。
このストリームベースのアプローチ変換プロセスが簡素化され、手動ループの必要がなくなります。
以上がJava でリストを int[] に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。