
求解代码
java
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
String str = br.readLine();
String[] wordStrings = str.split("\\s+");
Map<String, Integer> hMap = new HashMap<>();
for (String word : wordStrings) {
hMap.put(word, hMap.getOrDefault(word, 0) + 1);
}
// Map.Entry<String, Integer>:表示Map中的一个键值对(包含key和value)
List<Map.Entry<String, Integer>> keywords = new ArrayList<>();
for (Map.Entry<String, Integer> entry : hMap.entrySet()) {
// 只保留出现次数≥3的单词
if (entry.getValue() >= 3) {
keywords.add(entry);
}
}
keywords.sort((o1, o2) -> {
if (!o1.getValue().equals(o2.getValue()) ) {
return o2.getValue() - o1.getValue();// 降序
} else {
return o1.getKey().compareTo(o2.getKey());// 升序
}
});
for(Map.Entry<String,Integer> entry:keywords){
out.println(entry.getKey());
}
out.flush();
out.close();
br.close();
}
小贴士
-
hMap.entrySet()返回一个包含所有 Entry 的集合(Set<Map.Entry>); -
Entry是Map中键值对的最小封装单元,一个 Entry 对象 = 一个 key + 一个对应的 value。