首页 > 其他分享 >HashMap排序方法,少见的toArray转为Array 泛型数组 排序,而非ArrayList

HashMap排序方法,少见的toArray转为Array 泛型数组 排序,而非ArrayList

时间:2023-04-06 17:11:36浏览次数:42  
标签:toArray HashMap entrySet new hm Entry 排序

        HashMap<String,Integer> hm = new HashMap<>();
        hm.put("a", 1);
        hm.put("c", 2);
        hm.put("b", 3);
        
        Set<Entry<String, Integer>> entrySet = hm.entrySet();
        
        Entry<String, Integer>[] array = entrySet.toArray(new Entry[entrySet.size()]);
        //唯一绕过限制,创建泛型数组的方式,是先创建一个原生类型数组,然后再强制转型。
        //不能new Entry<String, Integer>[entrySet.size()]
        //前边Entry<String, Integer>,<String, Integer>不能去掉,否则下面sort报错
        
        Arrays.sort(array,new Comparator<Entry<String, Integer>>() {

            @Override
            public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
                return o2.getKey().compareTo(o1.getKey());
            }
            
        });
        
        for (Entry<String, Integer> entry : array) {
            System.out.println(entry.getKey());
        }

标签:toArray,HashMap,entrySet,new,hm,Entry,排序
From: https://www.cnblogs.com/hhdom/p/17293420.html

相关文章

  • C# List按照自定义的顺序去排序
    有没有遇到过产品经理说表格输出排序要按照指定的人员列表去排序?经过一番研究搜查发现一个方法可以实现话不多说上例子 publicclassUserInfo{publicstringName{get;set;}publicstringInfo{get;set;}} List<UserInfo>userInfos=newList<Use......
  • 王道C语言笔记NOTE-中级阶段Note8-排序算法真题实战
    一、2016年43题1、问题描述2、答案解析(1)、算法的基本设计思想由题意知,将最小的n/2个元素放进A1中,剩余元素放在A2中,分组结果即可满足题目要求。仿照快速排序的思想,基于枢轴把n个整数划分成两个子集,根据划分后枢轴所处的位置i分别处理:①、若i=n/2,则分组完成,算法结束;②、若i<......
  • Map自定义key,然后把value的集合List进行指定字段排序
    packagecom.zdft.purchase;importcom.google.common.collect.Lists;importjava.util.*;importjava.util.stream.Collectors;publicclassStudentMethod{//需求:Map自定义key,然后把value的集合List进行指定字段排序;例如:多次考试,取最高分的集合展示publics......
  • 列表中有整数、有特殊字符、有字母的排序问题
    列表中有整数、有特殊字符、有字母a=[2,1,3,5,4,'d','f','e','c','a','b','?','*','&']#定义一个函数defsort1(x):ifisinstance(x,int):  #判断传入的参数中是否有整数returnx #有整数返回整数本身......
  • 元素的多重排序
    应用场景:渲染用户界面时,因为关键的消息和特殊的事件应该优先显示在其他信息之前。numbers=[8,3,1,2,5,4,7,6]//原始数据group={8,3,5,7}//优先级高的数据,defsort_priority(numbers,group):found=Falsedefhelper(x):nonlocalfoun......
  • concurrentHashMap为什么是线程安全的?
    ConcurrentHashMap是线程安全的。它可以被多个线程同时使用而不需要额外的同步措施(比如使用synchronized)来保证线程安全。这是因为ConcurrentHashMap内部使用了一些非常高效的机制来保证线程安全,包括:分段锁:ConcurrentHashMap将数据分成多个段,每个段都有自己的锁。这样,在多线程......
  • Auto Chess (双指针, 极角排序)
    题目大意:释放一个45都的技能去尽可能消灭更多的敌人(在一个平面里面)  思路:技能是无线长的,于是抛弃无用信息,只保留斜率即可然后利用双指针,或者二分去做即可 ......
  • LeetCode 81. 搜索旋转排序数组 II
    1classSolution{public:boolsearch(vector<int>&nums,inttarget){intindex=-1;for(inti=0;i<nums.size()-1;++i){if(nums[i]>nums[i+1])index=i;}if(index==-1){......
  • HJ103 Redraiment的走法(梅花桩递增可走的最多步数)_排序_动态规划
    思路:该题目符合,最优结果拥有最优子结果的特征。考虑用动态规划。通过循环获取每个参数作为最后一个桩的最优子结果,后面桩的结果为前一个桩的最优子结果+1。如梅花桩“251545”。参考高赞答案,代码如下1importsys2a=int(sys.stdin.readline().strip())3b=list(map(......
  • 自建堆排序:
    建堆(heapification):蛮力算法空堆反复调用insert()接口,消耗时间过多,第k轮迭代需O(logK)时间,正比于其深度:总共需要O(logn!)=O(nlogn);同理于自顶向下、自左向右的上滤操作;实现时先入一个最大值元素,放在下标为0的地方,此后,元素从下标为1的地方进行建堆,假设父节点下标是i,则左右......