String filename = "SophieSallyJack.txt";
if (args.length == 1) {
filename = args[0];
}
Map<String, Integer> wordFrequency = new TreeMap<>();
List<String> incoming = Utilities.readAFile(filename);
wordFrequency = incoming.stream()
.map(String::toLowerCase)
.filter(word -> !word.trim().isEmpty())
.collect(Collectors.toMap(word -> word, word -> 1, (a, b) -> a + b, TreeMap::new));
int maxCnt = 0;
// TODO add a single statement that uses streams to determine maxCnt
for (String word : incoming) {
Integer cnt = wordFrequency.get(word);
if (cnt != null) {
if (cnt > maxCnt) {
maxCnt = cnt;
}
}
}
System.out.print("Words that appear " + maxCnt + " times:");
wordFrequency = incoming.parallelStream().
collect(Collectors.toConcurrentMap(w -> w, w -> 1, Integer::sum));
但这是不对的,我不确定如何将maxCnt合并到流中。
假设您已经从列表
中的文件提取了所有单词,可以使用这种方法计算每个单词的单词计数,
Map<String, Long> wordToCountMap = words.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
然后可以使用上面的映射
计算最自由的单词,如下所示,
Entry<String, Long> mostFreequentWord = wordToCountMap.entrySet().stream()
.max(Map.Entry.comparingByValue())
.orElse(new AbstractMap.SimpleEntry<>("Invalid", 0l));
如果您愿意,您可以将上述两个管道一起更改,
Entry<String, Long> mostFreequentWord = words.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.entrySet().stream()
.max(Map.Entry.comparingByValue())
.orElse(new AbstractMap.SimpleEntry<>("Invalid", 0l));
Optional<Entry<String, Long>> mostFreequentWord = words.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.entrySet().stream()
.max(Map.Entry.comparingByValue());
问题内容: 我正在上课的作业,正在寻找一些有用的指示,而不是完整的解决方案。基本上,我必须编写一个Java程序,该程序读取一个文本文件并逐行列出信息,列出行号,最后打印出最大值和最小值以及与每个值相关的年份。文本文件包含一年和该年的温度。因此,它列出了类似“ 1900 50.9”的内容。我不是要使用数组或扫描仪,这是分配的一部分。我已经能够成功地使程序逐行打印并逐行打印出相应的温度。有人告诉我,我
朋友们,我有一段代码,它读取文本文件并搜索匹配的单词,但在搜索文本文件时存在不确定性。有时它能够匹配单词,有时它不能,尽管单词存在于文本文件中。 代码如下: 以下是我的文本文件内容: 有人知道为什么会这样吗?假设我在文本文件中添加一个单词“finish”,然后搜索它,它总会找到它。但是,如果我的搜索词是“dadas”或“dadist”,则在et中生成null。
问题内容: 我想将包含字符串的巨大文件拆分为一组新的(较小)文件,并尝试使用nio2。 我不想将整个文件加载到内存中,因此我尝试了BufferedReader。 较小的文本文件应受文本行数的限制。 该解决方案有效,但是我想问一问,是否有人知道使用usion java 8(也许是带有stream()-api的lamdas)和nio2具有更好的性能的解决方案: 问题答案: 注意/ 及其子类的直接使用与
我正在使用PyCharm社区版2016,我注意到我无法打开大型数据输入文件或日志(20MB)。编辑简单地说“文件XXX太大(大小)”。 不仅如此,似乎没有办法改变限制。官方文档提到了一种增加使用intellisense的最大大小的方法,但根本没有增加可以打开的文件的最大大小。这是真的吗?这真的是一个完全无法打开大型日志的IDE吗?
问题内容: 假设我有一个Java8 ,并且使用了该流,那么如何控制流中使用的s 的关闭? 请注意,我可能无权访问个人,例如: 在进行了其他一些映射等之后,我终于在续集中失去了。 我首先认为垃圾收集器可以在需要时执行此操作,但是当它很长时,我已经经历了OS描述符耗尽。 问题答案: 关于使用FileReader的一般注意事项:FileReader在内部使用FileInputStream,它会覆盖并且因
问题内容: 我用Python打开了一个8 MB的文件,因为我想批量更改各种类型的文件名。我仔细检查并将文件加载到字符串中,然后使用字符串方法replace替换了所有内容。然后我注意到只有一半的文件被替换了。好像Python没有完全打开文件。 我必须在Python的范围内发挥某种字符串大小限制或最大文件大小限制吗? 请参阅Python搜索中的代码并替换未正确替换的代码。 我已更改为建议的代码。缓冲区