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

    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);

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

#1楼 票数:5

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

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

另外,您也可以使用流:

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

#2楼 票数:3

只需在for循环内将.toLowerCase()用于w

#3楼 票数:3 已采纳

您可以在放入地图时将字符串转换为小写。

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

#4楼 票数:1

您可以使用Apache Commons Collections中的CaseInsensitiveMap

其他人建议将键更改为小写字母,但这不是一个选择,因为程序的其他部分也可以访问地图,并期望键采用其原始格式。 因此,您需要根据使用情况谨慎行事。

  ask by LionKing translate from so

未解决问题?本站智能推荐:

3回复

带有null键的Java不区分大小写的映射[duplicate]

这个问题在这里已有答案: 如何简化null安全的compareTo()实现? 16个答案 Java中是否存在使用区分大小写的字符串匹配的Map实现, 但是还支持null键 ? 我知道 支持不区分大小写的String键匹配,但不支持null键。
4回复

比较单词中的字母时,Javascript不区分大小写

我有这个练习,用户输入一个单词,然后输入一个字母,看看该单词出现多少次。 这部分项目运作得很好。 但是,我想让它不区分大小写,因为现在它不是。 我想创建一个大写变量和一个小写变量,然后将这些变量与i或字母变量进行比较。 但是,它使计数器的数量增加了一倍。 有人能帮我吗? 这是我的代码
1回复

为什么十六进制在Java中不区分大小写?[关闭]

已关闭 。 这个问题是基于意见的。 它当前不接受答案。 了解更多 。 想改善这个问题吗? 更新问题,以便通过编辑此帖子以事实和引用的形式回
5回复

使字符串在Java中不区分大小写

我的应用程序中有一个问题,我有一个包含要搜索的单词的String ,然后使用该单词从长文本中搜索,我希望包含搜索到的单词的所有单词都返回(例如WoRd = word = WORD) 。 谢谢。 String tstr1是文本,而String string是搜索到的键,现在我要计算搜索到的键
2回复

HashMap中不区分大小写的搜索

我有一张地图: 现在,在此Map中,我需要使用KEYS执行不区分大小写的搜索。 我不是将值放在map中,而不是通过put函数,但是您可以将其视为以键值格式存储在数据库中的值,并将其作为Map检索。 我需要进行caseInsentive搜索。 经过研究,使用TreeMap可以解决问题,
3回复

Postgres中不区分大小写

我目前正在做一个Java项目,该项目已经开发了几个月。 该项目即将完成,现在我意识到Postgres是区分大小写的。 在我的登录过程中,无法区分username和“ UserName”。 我正在使用Java base,Hibernate和JPA作为后端实现,并使用Postgres作为数据
9回复

如何在Java中替换不区分大小写的文字子字符串

使用String中的replace(CharSequence target, CharSequence replacement) ,如何让目标不区分大小写? 例如,它现在的工作方式: 我怎样才能让它替换(或者如果有更合适的方法)不区分大小写,以便两个示例都返回“Bar”?
2回复

如何使用(正则表达式)删除java中重复的字母并且不区分大小写

我一直试图做的是用他们的小写字母(在java中)替换任何重复的字母。 例如: 我想要一个映射的函数: 但是,我没有成功使用正则表达式(在Java中)。 我尝试过以下方法: 但是,这会返回bOb而不是bob。 (它适用于boOb)。 我也尝试过: 这解决了一个问题,现在