我有此示例函数来获取列表中投票最多的名称。
如果仅我知道列表中的那些名称,则它应该像下面一样简单。

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
});


结果将是一个哈希图,其中包含每个单词的计数。

09-13 12:33