Java集合————Map使用Value值排序

Java集合————Map使用Value值排序

在Map集合中,一般是使用键值进行自然排序,所谓自然排序就好比自然数:1、2、3、4、5这样的顺序,字母的话就像A、B、C、D、E、F如此排序。但是由于一些特殊的需求,我们需要使用value值进行排序,话不多说,我们直接来看代码


import java.awt.List;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class MapSortByValueTest {
	public static void main(String[] args) {
		
		HashMap<Integer,String> hashMap = new HashMap<>();
		hashMap.put(1, "迪丽热巴");
		hashMap.put(2, "张三");
		hashMap.put(3, "张三丰");
		hashMap.put(4, "dsninvrekb");
		hashMap.put(5, "dasnvjnod");
		hashMap.put(6, "djvjd");
		
		Set<Map.Entry<Integer,String>> entrySet = hashMap.entrySet();
		System.out.println("使用默认排序:key排序");
		for (Map.Entry<Integer, String> entry : entrySet) {
			System.out.println(entry.getKey()+"----"+entry.getValue());
		}
		
		ArrayList<Map.Entry<Integer, String>> list = new ArrayList<>(hashMap.entrySet());
		Collections.sort(list,new Comparator<Map.Entry<Integer, String>>() {

			@Override
			public int compare(Entry<Integer, String> o1, Entry<Integer, String> o2) {
				// TODO Auto-generated method stub
				return o1.getValue().length() - o2.getValue().length();
			}

		});
		System.out.println("自定义排序:Value排序");
		for (Entry<Integer, String> entry : list) {
			System.out.println(entry.getKey()+"----"+entry.getValue());
		}	      
	    }
}

运行结果:
使用默认排序:key排序
1----迪丽热巴
2----张三
3----张三丰
4----dsninvrekb
5----dasnvjnod
6----djvjd
自定义排序:Value排序
2----张三
3----张三丰
1----迪丽热巴
6----djvjd
5----dasnvjnod
4----dsninvrekb

总结

1、通过EntrySet的使用将Map集合的数据存入List集合中。
2、通过Collections工具类调用排序函数对list集合进行排序,并直接实现Comparator接口,重写排序规则
3、遍历list集合,输出结果,这时你可以看到已经完成了以value方式排序的结果

提示

以上只是我自己的看法,如有相同纯属意外。如有错误,也请谅解,勿喷!如有收获或疑问,欢迎点赞评论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值