私はString []と、このString []を受け取り、Byte []を返すメソッドを持つコードを書いていました。最終的に、私はByteを変換し、String []の文字列としてキーを持つマップと変換の戻り値を取得する必要があります。これは私がJavaで8つのストリームを同一の実装方法である:productReferenceはIntros.boxed()vs forループ|パフォーマンス
IntStream.range(0, productReferences.length)
.filter(index -> (null!= productsPrice[index])).boxed()
.collect(Collectors.toMap(position -> productReferences[position],
position ->callSomeMethod(productsPrice[position])));
のString []とproductsPrice []はバイト[]配列です。
ここで問題はIntStream.boxed()メソッドです。内部的には、整数を整数に変換してストリームを返すので、コストのかかる操作と思われます。
他の方法は、シナリオのような種類を処理する最良の方法は何ループ
for(int i=0;i<productReferences.length; i++){
if (productsPrice[index]==null) continue;
//other code
}
ために使用するJavaのでしょうか? IntStreamを作成する理由を理解していますが、実際にボクシングを避けるためにboxed()メソッドを使用しないでコレクションメソッドにインデックスを持たせることができますか?
時期尚早な最適化は、すべての悪の根源です。余分なパフォーマンスが絶対に必要な場合を除き、理解しやすいものに固執してください。 – Mac70
@ Mac70あなたが言うことに私は全く同意します。 :-)まだ知識キティに加えて常に+1です。 – piyushGoyal