当前位置: 首页 > article >正文

java基础1:处理Map

一、适用场景:相对Map排序,想获取其中最大或最小值。

1、获取map集合里,获取 max(value)对应的key

1)、方式1
 @Test
    public void MapInnerMaxValue() {
        HashMap<String, Integer> hashMap = new HashMap<>();
        hashMap.put("a", 10);
        hashMap.put("s", 36);
        hashMap.put("c", 88);
        hashMap.put("e", 27);
        hashMap.put("6", 100);

        Optional<String> maxValueKeyOptional = hashMap.entrySet().stream()
                .max(Map.Entry.comparingByValue())
                .map(Map.Entry::getKey);

        maxValueKeyOptional.ifPresent(key -> System.out.println("最大value对应的key是: " + key));
    }

输出

最大value对应的key是: 6
2)、方式二:通过TreeMap获取

单线程情况下,用TreeMap时间复杂度O(logn),性能较好,推荐。

 @Test
    public void MapInnerMaxValue2() {
        Comparator<Integer> c=Comparator.comparingInt(Integer::intValue);
        TreeMap<Integer,String> treeMap=  new TreeMap (c);
        treeMap.put( 10,"i:j");
        treeMap.put( 36,"s");
        treeMap.put(88,"c");
        treeMap.put( 27,"e");
        treeMap.put( 100,"i:j");


       log.info("max(value)={},key={}", treeMap.lastEntry().getKey(),treeMap.lastEntry().getValue());
    }
    输出:max(value)=100,key=i:j
3)、方式三:通过TreeMap获取

想保证并发安全,还要保持较好性能,ConcurrentSkipListMap就是很不错的选择,时间复杂度O(logn) ,推荐使用。

 @Test
    public void MapInnerMaxValue3() {
        Comparator<Integer> c=Comparator.comparingInt(Integer::intValue);
        ConcurrentSkipListMap<Integer,String> skipMap=  new ConcurrentSkipListMap (c);
        skipMap.put( 10,"i:j");
        skipMap.put( 36,"s");
        skipMap.put(88,"c");
        skipMap.put( 27,"e");
        skipMap.put( 100,"i:j");
        log.info("max(value)={},key={}", skipMap.lastEntry().getKey(),skipMap.lastEntry().getValue());
    }
    
输出:
max(value)=100,key=i:j

待追加…


http://www.kler.cn/a/454652.html

相关文章:

  • QT线程 QtConcurrent (深入理解)
  • 双指针——查找总价格为目标值的两个商品
  • Vue axios 异步请求,请求响应拦截器
  • 单例模式懒汉式、饿汉式(线程安全)
  • 模拟——郑益慧_笔记1_绪论
  • windos挂载目录到linux
  • 《机器学习》KNN算法实现手写数字识别
  • Dots 常用操作
  • 云手机+Facebook:让科技与娱乐完美结合
  • C++--------继承
  • 了解jvm -server和-client 参数
  • 【ETCD】【实操篇(十八)】ETCD监控实战:提升系统健康与集群调试效率
  • platform_msi使用
  • 【Git】—— 使用git操作远程仓库(gitee)
  • httpclient GET 和POST 请求
  • Qt存储大整数到`JsonValue`
  • 赋能开发者 | 麒麟信安受邀参加2024开放原子开发者大会,以技术为引领,以人才创发展
  • 解读DeepseekV3
  • Go+chromedp实现Web UI自动化测试
  • uniapp 文本转语音
  • 挑战一个月基本掌握C++(第十二天)了解命名空间,模板,预处理器
  • 前端Python应用指南(五)用FastAPI快速构建高性能API
  • 同步异步日志系统:设计模式
  • ubuntu 账号从文本中的1000,改成0,后五笔输入法等中文输入法不可用,如何改回来
  • 【Ubuntu 20.4安装截图软件 flameshot 】
  • 全面Kafka监控方案:从配置到指标