首页 > 编程语言 >java stream 操作map根据key或者value排序的实现

java stream 操作map根据key或者value排序的实现

时间:2023-10-10 15:24:50浏览次数:34  
标签:map java stream Map unsortMap put new fundBenchMarkList

java stream 操作map根据key或者value排序的实现

public class Test02 {
    public static void main(String[] args) {
        List<FundBenchMarkInfo> fundBenchMarkList = new ArrayList<>();
        fundBenchMarkList.add(new FundBenchMarkInfo("2", new BigDecimal("123"), null));
        fundBenchMarkList.add(new FundBenchMarkInfo("5", new BigDecimal("12"), null));
        fundBenchMarkList.add(new FundBenchMarkInfo("1", new BigDecimal("8"), null));
        fundBenchMarkList.add(new FundBenchMarkInfo("7", new BigDecimal("8"), new BigDecimal("123345")));
        fundBenchMarkList.add(new FundBenchMarkInfo("8", new BigDecimal("3"), new BigDecimal("90")));
        fundBenchMarkList.add(new FundBenchMarkInfo("8", new BigDecimal("8"), null));

        // 把list 转成 map
        Map<String, FundBenchMarkInfo> collect = fundBenchMarkList.stream().collect(Collectors.toMap(t -> t.getIndexScod(), o -> o, (k1, k2) -> k1));

        // map 根据 key 排序
        LinkedHashMap<String, FundBenchMarkInfo> collect1 = collect.entrySet().stream()
                .sorted(Map.Entry.comparingByKey())
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue,
                        LinkedHashMap::new));

        Map<String, Integer> unsortMap = new HashMap<>();
        unsortMap.put("z", 10);
        unsortMap.put("b", 5);
        unsortMap.put("a", 6);
        unsortMap.put("c", 20);
        unsortMap.put("d", 1);
        unsortMap.put("e", 7);
        unsortMap.put("y", 8);
        unsortMap.put("n", 99);
        unsortMap.put("g", 50);
        unsortMap.put("m", 2);

        // 根据key 排序
        //Alternative way to sort a Map by keys, and put it into the "result" map
        Map<String, Integer> result2 = new LinkedHashMap<>();
        unsortMap.entrySet().stream()
                .sorted(Map.Entry.comparingByKey())
                .forEachOrdered(x -> result2.put(x.getKey(), x.getValue()));


        // map 根据value 排序 根据value 进行降序排列
        LinkedHashMap<String, Integer> collect2 = unsortMap.entrySet().stream()
                .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                        (oldV, newV) -> oldV, LinkedHashMap::new));

        //Alternative way
        Map<String, Integer> result3 = new LinkedHashMap<>();
        unsortMap.entrySet().stream()
                .sorted(Map.Entry.<String, Integer>comparingByValue().reversed())
                .forEachOrdered(x -> result3.put(x.getKey(), x.getValue()));


    }
}


标签:map,java,stream,Map,unsortMap,put,new,fundBenchMarkList
From: https://www.cnblogs.com/cgy1995/p/17754754.html

相关文章

  • JavaSE---SortedSet(TreeSet)
    SortedSet概述A{@linkSet}thatfurtherprovidesatotalorderingonitselements.提供元素排序的set;Theelementsareorderedusingtheir{@linkplainComparablenatural ordering},orbya{@linkComparator}typicallyprovidedatsortedsetcre......
  • 前端面试八股文 JavaScript
    前端面试八股文JavaScript谈谈对原型链的理解在JavaScript中,每个对象都有一个原型对象proto,指向其构造函数的原型对象prototype。当我们创建一个新的实例对象时,这个对象会从其构造函数的原型对象prototype中继承属性和方法。如果实例对象自身没有某个属性或方法,但是其构造函数......
  • 常用Stream API示例
    1.flatMap    将多个集合压平为一个集合List<Long>siteIdList=routeLines.stream() .flatMap(routeLine->Stream.of(routeLine.getSubLineFSiteId(),routeLine.getSubLineTSiteId())) .distinct() .collect(Collectors.toList());2.Collectors.toMap()......
  • HashMap源代码的阅读
    Createdby徐庆杰,lastmodifiedon八月08,2023从名字上来看,HashMap应该是通过HashCode的方法存储Key值已达到降低检索时间复杂度的目的的HashMap继承了AbstractMap<K,V>抽象类,并且继承了Map<K,V>接口而AbstractMap<K,V>实现了Map<K,V>中的部分方法default关键字在翻找M......
  • 基于Java Swing和BouncyCastle的证书生成工具
    "Almostnoonewillrememberwhathehadjustnotinterested."-Nobody“几乎没有人会记得他所丝毫不感兴趣的事情。”——佚名0x00大纲目录0x00大纲0x01前言0x02技术选型0x03需求分析目标用户用户故事功能需求安全需求兼容需求性能需求0x04原型设计主窗体RSA根......
  • Error: Failed to download metadata for repo 'appstream': Cannot prepare internal
    一背景跑了一份centos容器,想装一下net-tools,报如下错误Error:Failedtodownloadmetadataforrepo'appstream':Cannotprepareinternalmirrorlist:NoURLsinmirrorlist 二解决参考帖子:https://developer.aliyun.com/article/1165954  CentOS已经停止......
  • ASP .Net Core: AutoMapper与DTO的使用(自定类型转换)
    建立DTO物件创建名为Dtos文件夹,并添加TodoListSelectDto文件publicclassTodoListSelectDto{publicGuidTodoId{get;set;}publicstringName{get;set;}=null!;publicDateTimeInsertTime{get;set;}publicDateTimeUpdateTime{get......
  • Java设计模式之工厂设计模式
    1.1.概述需求:设计一个咖啡店点餐系统。设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。具体类的设计如下: 在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new......
  • 蓝牙MAP协议
    蓝牙MAP协议(MessageAccessProfile)是蓝牙技术联盟(BluetoothSIG)制定的一种蓝牙协议,用于手机和车载设备之间的短信同步。MAP协议可以让手机将短信发送到车载设备,也可以让车载设备将短信发送到手机。MAP协议的基本原理是使用OBEX协议传输短信数据。OBEX协议是一种无线文件传输协议......
  • TIOBE 发布 2023年10 月编程语言排行榜:Java 占比下跌 3.92%成第四
    转载TIOBE发布10月编程语言排行榜:Java占比下跌3.92%成第四(msn.cn)本月Python、C、Java均有所下跌,而Java的跌幅最大,为-3.92%,掉到第四,而C#的涨幅最大,增长了3.29%。对此,TIOBE的CEOPaulJansen认为,C#和Java之间的差距从未如此之小,Java受欢迎程度下降的主要......