我有此示例函数来获取列表中投票最多的名称。
如果仅我知道列表中的那些名称,则它应该像下面一样简单。
public static String getHighestVotes(final List<String> votedNames) {
int a = Collections.frequency(votedNames, "Ann");
int b= Collections.frequency(votedNames, "Annie");
int c = Collections.frequency(votedNames, "Ana");
//some logic code here..
return "";
}
但是,我没有,所以下面的代码没有用。尽管我可以通过某种方式来做到这一点..进行循环等,但如果List的长度达到数百万左右,性能将是我的问题。
那么,有没有要减少这项工作的工作呢?或者我真的应该去计算“唯一性”等等。
最佳答案
将您的姓名列表添加到地图中。例如:
Map<String, Integer> res = new HashMap<>();
votedNames.forEach( s -> {
if(res.get(s) == null) // initialize
// increment count for word
});
结果将是一个哈希图,其中包含每个单词的计数。