我在ArrayList中有名字,我想以最简单的方式找到最常见的元素。我尝试使用Collectoins.max(),但它的返回值不正确。
我创建了一个HashMap,使用名称az Keys和名称数量作为值,但我无法弄清楚如何编写具有最高值的名称。
(实际上,如果有两个或更多名称具有最高值,我必须得到所有这些名称。)
答案 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);
}
}