## HashMap的排序面试题

HashMap的排序面试题

1.首先声明一下,本人小白一枚,有写错的地方望大佬指正!
我们来看一下实试题要求
已知有一个HashMap<Integer,User> 集合 ,User 有 name(String),age(Integer)两个属性。请写一个方法实现HashMap的饿排序功能,方法的参数为HashMap<Integer,User> , 返回值类型为HashMap<Integer,User>,要求按照HashMap中的User的age进行倒序进行排序 ,排序时 key=value不能拆散。
注意:HashMap有一个子类是LinkedHashMap 他是有序的并且我们利用它来完成我们的题目要求

public class HashMapTest{
	public static void main(String[] args){
		HashMap<Integer,User> userMap =	new HashMap<>();
		//这里我们实体类就不写了直接给map添加元素
		userMap .put(1,new User("张三“,18));
		userMap .put(3,new User("张三“,190));
		userMap .put(2,new User("张三“,15));
		System.out.println("==========排序前===========")
		System.out.println(userMap);
		System.out.println("==========排序后===========")
		System.out.println(sortHashMap(userMap))
	}
	public ststic HashMap<Integer,User> sortHashMap(HashMap<Integer,User> map){
			//1.首先我们需要把map中的键值对拿出来
			Set<Map.Entry<Integer,User>> entrySet =  map.entrySet();
			//2.我们把Set集合转变成List集合 为什么? 后面直接用集合工具包
			ArrayList<Map.Entry<Integer,User>>  entryList = new ArrayList<Map.Entry<Integer,User>>(entrySet);
			//3.现在我们来使用Collections来进行排序
			Collections.sort(entryList , new Comparator(Map.Entry<Integer,User>){
					@Override
					public int compare(Map.Entry<Integer,User> o1,Map.Entry<Integer,User> o2){
						//排序条件  这里我们按照要求来排序
						return o1.getValue.getAge - o2.getValue.getAge;
					}
			} );
			//4.好了现在我们的entryList已经排好序了,我们创建一个LinkedHashMap来储存entryList中的元素
			LinkedHashMap linkedHashMap = new LinkedHashMap<>();
			for(Map.Entry<Integer,User> entry,entryList){
				linkedHashMap.put(entry.getKey,entry.getValue);
			}
			//直接返回linkedHashMap
			return linkedHashMap;
	}
}

祝大家面试顺利!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值