如何在Java中使用Map(或Set?)找到最常见的元素?

时间:2017-06-30 08:56:51

标签: java dictionary arraylist

我在ArrayList中有名字,我想以最简单的方式找到最常见的元素。我尝试使用Collectoins.max(),但它的返回值不正确。

我创建了一个HashMap,使用名称az Keys和名称数量作为值,但我无法弄清楚如何编写具有最高值的名称。

(实际上,如果有两个或更多名称具有最高值,我必须得到所有这些名称。)

1 个答案:

答案 0 :(得分:1)

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public class StringChecker {

public static void main(String[] args) {
    ArrayList<String> string;
    string = new ArrayList<>(Arrays.asList("Mah", "Bob", "mah", "bat", "MAh", "BOb"));
    Map<String, Integer> wordMap = new HashMap<String, Integer>();

    for (String st : string) {
        String input = st.toUpperCase();
        if (wordMap.get(input) != null) {
            Integer count = wordMap.get(input) + 1;
            wordMap.put(input, count);
        } else {
            wordMap.put(input, 1);
        }
    }
    System.out.println(wordMap);
    Object maxEntry = Collections.max(wordMap.entrySet(), Map.Entry.comparingByValue()).getKey();
    System.out.println("maxEntry = " + maxEntry);
}

}