基本上我有一个 List<Map<String,Object>>
,我想根据Map中某个键的值对其进行排序。
问题是我不知道。。。这个Map可以包含字符串,整数,双精度,浮点等。。。。我想把它分类:
到目前为止
List<Map<String,Object>> data = getResults();
Collections.sort(data, (o1, o2) -> (String.valueOf(o2.get("Field1")))
.compareTo((String.valueOf(o1.get("Field1")))));
这不是一个好主意,因为数字没有正确排序。。。。我怎么处理?
2条答案
按热度按时间goucqfw61#
首先,您必须定义所需的顺序,特别是字符串值的位置,或者它们都是文本形式的数字?
然后实现一个更复杂的comparator方法,从最高优先级到最低优先级遍历比较标准。
未经测试:
hfyxw5xn2#
您可以通过比较双精度值来概括比较数字,因为它们是最大的。如果两个对象无法转换为数字,并且无法从这些对象中解析双精度值,则比较它们的字符串值:
另请参见:按列标题对二维列表排序