我遇到了问题。统计列表中字符串的出现次数,排序和提取仅在Java中排名前1000位
我有一个包含事件名称的大型Java String列表(约100K条目)。
它是这样的:
List<String> myList = new ArrayList<>();
myList.add("eventB");
myList.add("eventB");
myList.add("eventA");
myList.add("eventB");
myList.add("eventA");
myList.add("eventA");
myList.add("eventA");
myList.add("eventB");
myList.add("eventB");
myList.add("eventC");
myList.add("eventD");
myList.add("eventC");
...
我需要一种方法来计算每一个事件的发生,选择顶部1000事件及其发生。我不知道所有的事件的名字......我已经得到了大约1000种不同的事件名称..
我的输出应该是这样的:
___
_________________ |
| EventName | # | |
|___________|_____| |
| eventB | 609 | |
| eventC | 542 | |
| eventD | 540 | |
| eventA | 463 | \ top 1000
| . | . |/entry
| . | . | |
| . | . | |
| eventN | 123 | |
|___________|_____| |
___|
我需要eventName的和整数的字符串(#)。 (我会放他们之后到Web应用程序的HTML表格)
我尝试了这种方式:
Map<String,Integer> myMap = new HashMap<String, Integer>();
for(String evnt : myList){
if(!myMap.containsKey(evnt))
myMap.put(evnt,1);
else{
myMap.put(evnt, myMap.get(evnt)+1);
}
}
但现在我不知道怎么样呢..
你有任何的代码? – matcheek
你需要的是**态度**。就像:你有胆量自己做你的工作;而不是简单地将你的要求放在其他人身上,并希望有人为你做好工作。 – GhostCat
你有任何代码吗?这可能不是最好的解决方案,但考虑一个hashmap。 –