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。

相关推荐
952362 小时前
MyBatis
后端·spring·mybatis
FQNmxDG4S4 小时前
Java多线程编程:Thread与Runnable的并发控制
java·开发语言
虹科网络安全4 小时前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
axng pmje5 小时前
Java语法进阶
java·开发语言·jvm
uzong5 小时前
9 种 RAG 架构,每位 AI 开发者必学:完整实战指南
后端
rKWP8gKv75 小时前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
老前端的功夫5 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_435287925 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
小江的记录本5 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
止语Lab5 小时前
从手动到框架:Go DI 演进的三个拐点
开发语言·后端·golang