Java 不同场景下JSONObject的排序列表

Java 不同场景下JSONObject的排序列表,java,json,sorting,Java,Json,Sorting,我有一个JSONObject的列表,比如 [{"id":"aaa", "value":"-1"}, {"id":"bbb", "value":"10"}, {"id":"ccc", "value":"20"}, {"id":"ddd", "value":"-"}, {"id":"eee", "value":"-10"}] 我必须根据每个JSONObject的值按升序和降序对列表进行排序。但在升序和降序情况下,具有-的值应该始终显示在最后。 在另一种情况下,我们应该只显示正值,将负值视为-。 我

我有一个JSONObject的列表,比如

[{"id":"aaa", "value":"-1"}, {"id":"bbb", "value":"10"}, {"id":"ccc", "value":"20"}, {"id":"ddd", "value":"-"}, {"id":"eee", "value":"-10"}]
我必须根据每个JSONObject的值按升序和降序对列表进行排序。但在升序和降序情况下,具有-的值应该始终显示在最后。 在另一种情况下,我们应该只显示正值,将负值视为-。
我怎样才能以最好的方式同时处理这两种情况

以下是如何使用Jackson实现此目标:

String str = "[{\"id\":\"aaa\", \"value\":\"-1\"}, {\"id\":\"bbb\", \"value\":\"10\"}, {\"id\":\"ccc\", \"value\":\"20\"}, {\"id\":\"ddd\", \"value\":\"-\"}, {\"id\":\"eee\", \"value\":\"-10\"}]";
ObjectMapper om = new ObjectMapper();
List<SomeClass> list = om.readValue(str, new TypeReference<List<SomeClass>>() {});
list.sort(Comparator.comparingInt(o -> {
    try {return Integer.parseInt(o.getValue());}
    catch (NumberFormatException e) {return Integer.MAX_VALUE;}
}));
System.out.println(list);

要更改比较器的方向,请在比较器上调用.reversed。例如Comparator.comparingInt…reversed.

当我们调用.reversed时,虚线值-将首先出现在右侧?@SAKTHIVELN是的,但我可以看出您不想要它。在这个场景中,您可以根据需要创建一个比较器。