アレックス:
私は別のリストに基づいてリストをフィルタリングするには、以下の機能を使用しています。たとえば、次のようにprogramLines [1, 2, 4, 5, 5, 6, 6, 7, 7, 9, 13]
とライン[9, 10, 13, 14]
この出力に[9, 13]
。> -しかし、私は、この出力にそれを変更したい[9,0,13,0]
値を持つ塗りつぶしアウト残りの要素に他の言葉で0
。
public List<Integer> filter(List<Integer> lines, List<Integer> programLines)
List<Integer> listOutput =
lines.stream().filter(programLines::contains).collect(Collectors.toList());
return listOutput;
}
彼らは次のとおりでした:
使用するmap
代わりにfilter
:
public List<Integer> filter(List<Integer> lines, List<Integer> programLines)
List<Integer> listOutput =
lines.stream()
.map(i -> programLines.contains(i) ? i : 0)
.collect(Collectors.toList());
return listOutput;
}
場合はprogramLines
大きいです、それを変換するために有用である可能性がSet
より高いパフォーマンスのために:
public List<Integer> filter(List<Integer> lines, List<Integer> programLines)
Set<Integer> filter = new HashSet<>(programLines);
List<Integer> listOutput =
lines.stream()
.map(i -> filter.contains(i) ? i : 0)
.collect(Collectors.toList());
return listOutput;
}