Java中不区分大小写的映射

Lio*_*ing 1 java for-loop case-insensitive linkedhashmap

我有一个写入文本文件的代码,然后打印出在文本文件中找到每个单词的次数。它工作正常,但不区分大小写。而且我被卡住了。您能否提出建议?

    Map<String, Integer> map = new LinkedHashMap<>();
    for (String w : data) {
        Integer n = map.get(w.);
        n = (n == null) ? 1 : ++n;
        map.put(w, n);
    }
    System.out.println(map);
Run Code Online (Sandbox Code Playgroud)

这是代码。感谢您的时间。

Fed*_*ner 5

正如其他人所说,在将条目放入地图之前,您需要小写(或大写)键。要计算字数,可以使用Map.merge

Map<String, Integer> frequencies = new LinkedHashMap<>();
data.forEach(w -> frequencies.merge(w.toLowerCase(), 1, Integer::sum);
Run Code Online (Sandbox Code Playgroud)

另外,您也可以使用流:

Map<String, Long> frequencies = data.stream()
    collect(Collectors.groupingBy(
            String::toLowerCase,
            Collectors.counting()));
Run Code Online (Sandbox Code Playgroud)