BISHI23 小红书推荐系统

求解代码

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

  • EntryMap 中键值对的最小封装单元,一个 Entry 对象 = 一个 key + 一个对应的 value。

相关推荐
Mark_ZP1 天前
【锁1】Synchronized vs ReentrantLock区别
java
立心者01 天前
SpringBoot中使用TOTP实现MFA(多因素认证)
java·spring boot·后端
枕星而眠1 天前
C++ STL Map容器完全指南:从有序红黑树到无序哈希表
java·开发语言
AskHarries1 天前
SEO 页面怎么生成
后端
爱吃牛肉的大老虎1 天前
Rust对象之结构体,枚举,特性
开发语言·后端·rust
石榴1 天前
NestJS 的请求到底经过了什么:装饰器、守卫、拦截器、管道与中间件如何配合
后端
bbq粉刷匠1 天前
HashMap 底层原理深度拆解(二):putVal 完整链路解析(懒加载 · 链表遍历 · 尾插法)
java·开发语言·哈希算法
Gopher_HBo1 天前
moby-client客户端
后端
Sam_Deep_Thinking1 天前
一个靠谱的C端网关服务应该包含什么内容
java·程序员·系统架构
杨运交1 天前
[055][调度模块]Spring动态任务调度框架的设计与实现
java·后端·spring