HashMap排序

小编 2026-06-10 阅读:701 评论:0
一.HashMap排序 已知一个HashMap<Integer,User>集合,User有name(String)和age(int)属性。请写一个方法实现对HashMap的排序功能...

一.HashMap排序

已知一个HashMap<Integer,User>集合,User有name(String)和age(int)属性。请写一个方法实现对HashMap的排序功能,该方法接受HashMap<Integer,User>为形参,返回类型为HashMap<Integer,User>,要求对HashMap中的User的age倒叙进行排序,排序时key=value键值对不得拆散

tip:要做出这道题必须对集合的体系结构非常的熟悉,HashMap本身就是不可排序的,但是该题偏偏让给HashMap排序,那我们就得想在API中有没有这样的Map结构是有序的,LinkedHashMap,对,就是它,它是Map结构,也是链表结构,有序的,更好的是它是HashMap的子类,我们返回LinkenHashMap<Integer,User>即可,还符合父类的编程思想

package com.czxy.webservice;
import java.util.*;

/**
 * @ClassName Sort
 * @Description HashMap排序
 * @Author Armyman
 * @Date 2018/12/22 9:50
 * @Version 1.0
 **/
public class Sort {

    public static void main(String[] args) {
        //存放基础数据
        HashMap<Integer, User> map = new HashMap<>();
        map.put(1,new User(\"张三\",12));
        map.put(3,new User(\"李四\",23));
        map.put(2,new User(\"王五\",22));
        //第一次输出
        System.out.println(map);

        //调用sort方法
        HashMap<Integer, User> sort = sort(map);

        //第二次输出
        System.out.println(sort);

    }

    //排序方法
    public static HashMap<Integer,User> sort(HashMap<Integer,User> map) {
        //获取内容
        Set<Map.Entry<Integer, User>> entries = map.entrySet();

        //存入到list,用来排序
        ArrayList<Map.Entry<Integer, User>> list = new ArrayList<>(entries);
        //调用Collections排序
        //第一个参数:集合
        //第二个参数:排序核心方法
        Collections.sort(list, new Comparator<Map.Entry<Integer, User>>() {
            @Override
            public int compare(Map.Entry<Integer, User> o1, Map.Entry<Integer, User> o2) {
                //倒序
                return o2.getValue().getAge() - o1.getValue().getAge();
            }
        });

        //创建有序集合LinkedHashMap,存放数据
        LinkedHashMap<Integer, User> linkedHashMap = new LinkedHashMap<>();
        //遍历list
        for (Map.Entry<Integer, User> entry : list) {
            //将数据存到linkedHashMap
            linkedHashMap.put(entry.getKey(),entry.getValue());
        }

        //返回数据
        return linkedHashMap;
    }
}
版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表