[英]How to sort java List<Map<String, Object>> by String asc?
[英]How to i sort a List<Map<String,Object>> in java
我正进入(状态
List<Map<String,Object>> listMap = [
{employee=17, fromdate=2010-08-01 00:00:00.0, full_inc=25572.0000},
{employee=17, fromdate=2010-09-01 00:00:00.0, full_inc=28347.0000},
{employee=17, fromdate=2010-10-01 00:00:00.0, full_inc=37471.0000},
{employee=17, fromdate=2011-02-01 00:00:00.0, full_inc=47033.0000},
{employee=17, fromdate=2011-07-01 00:00:00.0, full_inc=50592.0000}
]
任何人都可以帮助我如何在java中根据full_inc从高到低对这个地图列表进行排序
您可以在下面给出的 Java 8 中使用:
listMap.sort(Comparator.comparing(m->(double) m.get("full_inc"),Comparator.nullsLast(Comparator.reverseOrder())));
您可以使用自定义比较器,但您需要您的值(当前为Object
)来实现Comparable
。 根据您列表的当前声明,您不能这样做(您如何比较两个随机对象?):
List<Map<String,Comparable>> listMap = ...
Collections.sort(listMap, new Comparator<Map<String, Comparable>> () {
@Override
public int compare(Map<String, Comparable> m1, Map<String, Comparable> m2) {
return m2.get("full_inc").compareTo(m1.get("full_inc")); //descending
}
});
注意:您需要添加错误检查。
我会
解决方案 1 是将要排序的所有条目放在TreeMap<K,V>
(TreeMap doc ) 中,其中 K 是您排序的条件(此处为 full_inc),而 V 是您要排序的内容。 然后 TreeMap.entrySet 将按照K
的 compare() 顺序进行迭代。
解决方案 2 是使用 full_inc 创建您自己的Comparable类以与同一类的对象进行比较,并使用Collections.sort与它。
解决方案 3 几乎与 2 相同,使用Collections.sort和比较器根据它们的getFullInc()
比较自定义类的两个实例
您可以将 Collections.sort() 与您自己的比较器一起使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.