問題のシナリオを説明しましょう。Java 8 - 要素をHashMapにマージするには
ファイルから一度に1行ずつ読んでいます。私は区切り記号を使用して行を分割し、各単語の頻度を数えてマップに保存します。
コードスニペット:私は次の行を読んだとき
Map<String, Integer> frequencyMap = new HashMap<>();
try {
fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line = "";
while ((line = bufferedReader.readLine()) != null) {
frequencyMap = Arrays.stream(line.split(PHRASE_SEPARATOR))
.map(String::trim)
.collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));
}
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
はしかし、それは、既存の値にキーと値のペアをマージしません。ファイルから行を読み込んでいる間に、新しいキーと値のペアがマージされるようにするにはどうすればよいですか。
あなたは各繰り返しで 'frequencyMap'を上書きしています。 –
はい、そうです。同意する。新しいKey-Valueペアを追加する方法はありますか? –
@RahulDevMishra問題は、追加したくないですが、周波数マップをマージしたいということです。次の行のエントリーは現在のエントリーを置き換えるべきではなく、マージしてください。たとえば、この行に2 "a"があり、マップにすでに5がある場合、 "a"の新しいエントリは2ではなく7になる必要があります。 – dasblinkenlight