我有一个List,其内容是带有字符串键的Map,如果是String或Long,则是值。
[{
"name": "Abc",
"id": 1522047548000
},
{
"name": "Xyz",
"id": 1522048221000
}]
如何对列表进行排序
答案 0 :(得分:1)
从JAVA 1.8开始,java.util.Comparator中有一个名为comparison的新方法。 它返回比较器按给定键比较对象。 https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html#comparing-java.util.function.Function-
在这种情况下,按名称进行比较,它看起来像:
list.sort(Comparator.comparing(o -> String.valueOf(o.get("name"))));
并按ID进行比较:
list.sort(Comparator.comparing(o -> (Long) o.get("id")));
答案 1 :(得分:0)
使用Java 8,您可以使用以下内容:
list.stream()
.sorted((a, b) -> a.get("id").compareTo(b.get("id"))
.thenComparing(a.get("name").compareTo(b.get("name")));
结果是另一个流,您可以将其收集到另一个列表中。这不会改变原始列表(可能有用也可能没用)。
(我是Java新手,过去几年曾经使用过C#,所以我可能错过了一些东西......)