java map比较值的大小_如何在Java中按值(ArrayList)大小对Map进行排序?

博客介绍了在Java中比较Map值大小的方法。可使用无序的HashMap,排序时将其值放入TreeMap,通过自定义Comparator按列表大小比较。还给出了自定义比较器的代码示例,同时指出仅用TreeMap排序可能存在的问题。

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

您应该使用无序的HashMap,然后每次要排序时,使用将HashMap作为变量的Comparator将HashMap的所有值放入TreeMap中。

然后,对于您比较的每个键,您将获得HashMap(列表)的值并检查列表大小。因此,您可以按列表大小进行比较,根据具体情况返回-1,0或1。

完成所需后,您将丢弃该TreeMap。

如果您尝试仅使用TreeMap,那么您将看到您根据不是此类键属性的值来排序键。在这种情况下,值的长度(列表)。因此,可能存在一个增加列表长度的函数,而TreeMap甚至都不会注意到。

一些代码:

public class ListSizeComparator implements Comparator {

private final Map> map;

public ListSizeComparator(final Map> map) {

this.map = map;

}

@Override

public int compare(String s1, String s2) {

//Here I assume both keys exist in the map.

List list1 = this.map.get(s1);

List list2 = this.map.get(s2);

Integer length1 = list1.size();

Integer length2 = list2.size();

return length1.compareTo(length2);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值