一个HashMap面试题

该博客展示了如何将HashMap中的键按照对应的值从大到小排序并输出。首先创建一个HashMap并填充数据,然后使用Collections.sort()方法两次排序,第一次按key排序,第二次按value排序。最后,遍历排序后的List并打印结果。代码实现了HashMap的value排序功能,但输出仍按key排序展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

将Hashmap<string,integer>中的key输出到list中,并且按对应的value从大到小排序
* 例如: {‘A’:2,‘B’:3,‘C’:1}的hashmap输出{‘C’,‘A’,‘B’}

package com.example.mybtaispuls.test;

import java.util.*;

/**
 * @program: test
 * @description:
 * @author: liulq
 */
public class Test1 {
    /**
     * 将Hashmap<string,integer>中的key输出到list中,并且按对应的value从大到小排序
     * 例如: {'A':2,'B':3,'C':1}的hashmap输出{'C','A','B'}
     * @param args
     */
    public static void main(String[] args) {
        Map<String, Integer> HashMap = new HashMap<String, Integer>();
        HashMap.put("A", 2);
        HashMap.put("B", 4);
        HashMap.put("C", 1);
        HashMap.put("D", 3);
        List<Map.Entry<String, Integer>> infoIds = new ArrayList<Map.Entry<String, Integer>>(HashMap.entrySet());
        //对HashMap中的key 进行排序
        Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {
            public int compare(Map.Entry<String, Integer> o1,
                               Map.Entry<String, Integer> o2) {
                return (o1.getKey()).toString().compareTo(o2.getKey().toString());
            }
        });
        // 对HashMap中的key 进行排序后 显示排序结果
        // 注意这里输出的是List 的对象 infoIds
        for (int i = 0; i < infoIds.size(); i++) {
            String id = infoIds.get(i).toString();
            System.out.print(id + "  ");
        }
        System.out.println();

        // 对HashMap中的 value 进行排序
        Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {
            public int compare(Map.Entry<String, Integer> o1,
                               Map.Entry<String, Integer> o2) {
                return (o1.getValue()).toString().compareTo(o2.getValue().toString());
            }
        });

        // 对HashMap中的 value 进行排序后  显示排序结果
        for (int i = 0; i < infoIds.size(); i++) {
            String id = infoIds.get(i).toString();
            System.out.print(id + "  ");
        }
    }
}
  • 效果:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小小刘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值