Java中不区分大小写的映射
我有一个代码,可以写入文本文件,然后打印出文本文件中每个单词的查找次数。它工作正常,但需要区分大小写。我被卡住了。你能建议怎么做吗Java中不区分大小写的映射,java,for-loop,case-insensitive,linkedhashmap,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);
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);
Map Map=newlinkedhashmap();
for(字符串w:数据){
整数n=map.get(w.);
n=(n==null)?1:+n;
地图放置(w,n);
}
系统输出打印项次(map);
这是密码。
感谢您抽出时间。您可以使用Apache Commons Collections
其他人建议将密钥更改为小写,但这可能不是一个选项,因为程序的其他部分也可以访问地图,并希望密钥保持原始格式。因此,您需要根据用例小心处理。您可以从Apache Commons集合中使用
其他人建议将密钥更改为小写,但这可能不是一个选项,因为程序的其他部分也可以访问地图,并希望密钥保持原始格式。因此,您需要根据用例小心处理。只需在
for
循环中使用.toLowerCase()
forw
,在for
循环中使用.toLowerCase()
for即可将字符串转换为小写,同时放入映射
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);
Map Map=newlinkedhashmap();
for(字符串w:数据){
整数n=map.get(w.toLowerCase());
n=(n==null)?1:+n;
put(w.toLowerCase(),n);
}
系统输出打印项次(map);
您可以在放入地图时将字符串转换为小写
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);
Map Map=newlinkedhashmap();
for(字符串w:数据){
整数n=map.get(w.toLowerCase());
n=(n==null)?1:+n;
put(w.toLowerCase(),n);
}
系统输出打印项次(map);
正如其他人所说,在将条目放入地图之前,需要将键小写(或大写)。要计算字数,您可以使用:
Map frequencies=newlinkedhashmap();
data.forEach(w->frequencies.merge(w.toLowerCase(),1,Integer::sum);
或者,您也可以使用流执行此操作:
Map<String, Long> frequencies = data.stream()
collect(Collectors.groupingBy(
String::toLowerCase,
Collectors.counting()));
Map frequencies=data.stream()
收集(Collector.groupingBy)(
字符串::toLowerCase,
收集器。计数();
正如其他人所说,在将条目放入地图之前,您需要将键小写(或大写)。要计算字数,您可以使用:
Map frequencies=newlinkedhashmap();
data.forEach(w->frequencies.merge(w.toLowerCase(),1,Integer::sum);
或者,您也可以使用流执行此操作:
Map<String, Long> frequencies = data.stream()
collect(Collectors.groupingBy(
String::toLowerCase,
Collectors.counting()));
Map frequencies=data.stream()
收集(Collector.groupingBy)(
字符串::toLowerCase,
收集器。计数();
在将数据放入映射之前,只需将文本小写或大写…在将数据放入映射之前,只需将文本小写或大写…几乎。从映射获取计数器时,还必须使用小写。:)或只需map.merge(w.toLowerCase(),1,Integer::sum)
差不多。从映射中获取计数器时,还必须使用小写。:)或仅使用map.merge(w.toLowerCase(),1,Integer::sum)代码>根据文档,您已链接,此映射实现的工作方式与其他解决方案完全相同,即将所有键也转换为小写。根据文档,您已链接,此映射实现的工作方式与其他解决方案完全相同,即将所有键也转换为小写。