我正在用Java制作一个单词云程序,目前我很难计算单词。我不允许使用像kennykumo或opencloud这样的库来完成大部分工作。
用户输入一个文本墙,我已取出停用词并将结果放入ArrayList
。然后,我正在搜索有效的事件,每次找到重复的单词时,它会将其添加到地图中,但它包含每一个计数,我需要最高计数。是找到每个单词最高的循环吗?
一旦我能够获得该单词的出现次数,我可以继续为其分配最大的字体,然后是下一个最大的字体,依此类推,并显示给用户查看。
这是图片中的代码以及我尝试过的一些解决方案。
ArrayList<String> wordsList = new ArrayList<>();
for (String word : arList) {
if (!stopWordList.contains(word)) {
wordsList.add(word);
int occurrences = Collections.frequency(wordsList, word);
//System.out.println(word +" "+ occurrences);
Map<Integer, String> map = new TreeMap<Integer, String>();
//HashMap<Integer, String> map = new HashMap<>();
map.put(occurrences, word);
//Map<String, Long> counts = wordsList.stream().collect(Collectors.groupingBy(e -> e, Collectors.counting()));
System.out.println(map);
//map.forEach((k,v)->System.out.println("Count : " + k + " word : " + v));
Map<Integer, String> map2 = new TreeMap(Collections.reverseOrder());
map2.putAll(map);
}
}
感谢您的帮助。