gpt4 book ai didi

java - HashMap String 和 Count 每个词被使用的次数

转载 作者:行者123 更新时间:2023-11-29 04:37:29 27 4
gpt4 key购买 nike

下面的问题是Java

示例数据:https://tartarus.org/martin/PorterStemmer/output.txt

我有一个 tokenizationString 字符串数组,其中包含与上面的列表类似的单词,其中有许多重复的单词。

我必须将该字符串数组转换成 HashMap ,然后使用 HashMap 计算每个单词的使用次数(计算字符串数组中的重复值,但我必须使用 HashMap 相关方法)。

我正在考虑这样做

Map<Integer, String> hashMap = new HashMap<Integer, String>();    
for(int i = 0 ; i < tokenizationString.length; i++)
{
hashMap.put(i, tokenizationString[i]);

}

之后,我必须按使用次数对字符串数组进行排序。

最后我希望能够打印出这样的结果:

the "was used" 502 "times"
i "was used" 50342 "times"
apple "was used" 50 "times"

最佳答案

首先,你的 map 应该是Map<String, Integer> (字符串及其频率)。我正在为您提供 Java 8 流解决方案。

    public static void main(String[] args) {
try (Stream<String> lines = Files.lines(Paths.get("out.txt"))) {
Map<String, Long> frequency = lines
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(o, n) -> o,
LinkedHashMap::new
));

} catch (IOException e) {
e.printStackTrace();
}
}

以上代码将从文件中逐行读取。然后收集为频率图。然后再次将它们转换为 entrySet 的流.然后根据值以相反的顺序对流进行排序。最后将它们收集为 LinkedHashMap . LinkedHashMap因为它将维护插入顺序。查看 Java 8 Stream API。

关于java - HashMap String 和 Count 每个词被使用的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40712210/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com