reportingList.stream().sorted(Comparator.comparing(e -> MapUtils.getInteger(e, "value"), Comparator.nullsLast(Integer::compareTo))).collect(Collectors.toList());
时间: 2024-04-28 20:19:14 浏览: 87
这行代码使用Java 8中的Stream API对一个`List`进行排序,排序规则为按照每个元素的"value"键对应的值进行升序排序,如果"value"键对应的值为null,则将其排在最后。
具体来说,`reportingList`是一个`List`类型的集合,其中每个元素都是一个`Map`类型的键值对。`MapUtils.getInteger(e, "value")`是一个Apache Commons Lang库中的方法,用于获取Map中"key"对应的值并将其转换为`Integer`类型,如果值为null,则返回null。Comparator.comparing(e -> MapUtils.getInteger(e, "value"), Comparator.nullsLast(Integer::compareTo))则使用Java 8中的Comparator接口实现了一个比较器,用于按照每个元素的"value"键对应的值进行排序,如果值为null,则将其排在最后。最后,通过Stream API中的collect方法将排序后的数据收集到一个新的List中并返回。
简而言之,这行代码的作用是对一个Map类型的List集合按照其中每个元素的"value"键对应的值进行升序排序,并将排序结果收集到一个新的List集合中返回。
相关问题
reportingList.stream().sorted(Comparator.comparing(e->MapUtils.getInteger(e,"value"),Comparator.nullsLast(Integer::compareTo))).collect(Collectors.toList());
这是一个 Java 8 中的流式操作,对 `reportingList` 中的元素进行排序,并将排序后的结果收集到一个新的列表中。具体来说:
- `stream()` 方法将 `reportingList` 转换为一个流(Stream)。
- `sorted()` 方法对流中的元素进行排序。这里使用了一个比较器(Comparator)来指定排序方式。这个比较器先按照元素中名为 "value" 的属性进行升序排序,如果这个属性值为 null,则将其排在最后。
- `collect()` 方法将排序后的结果收集到一个新的列表中,并返回这个列表。
需要注意的是,这里的 `MapUtils` 是 Apache Commons Lang 中的一个工具类,用于处理 Map 类型的数据。`getInteger()` 方法用于获取 Map 中指定键("value")对应的值,并将其转换为 Integer 类型。如果值为 null,则返回 null。
debtBuyerByMainBuyerId.stream() .filter(map -> !Objects.equals(MapUtils.getInteger(map, "buyerId"), mainBuyerId)) .sorted(Comparator.comparing(map -> (BigInteger) MapUtils.getObject(map, "maxDebtDay"))) 实现倒序或正序
要实现倒序或正序,可以使用`reversed()`方法或`Comparator.reverseOrder()`静态方法。例如,要按照最大欠款天数从大到小排序,可以这样写:
```
debtBuyerByMainBuyerId.stream()
.filter(map -> !Objects.equals(MapUtils.getInteger(map, "buyerId"), mainBuyerId))
.sorted(Comparator.comparing(map -> (BigInteger) MapUtils.getObject(map, "maxDebtDay")).reversed())
```
或者这样写:
```
debtBuyerByMainBuyerId.stream()
.filter(map -> !Objects.equals(MapUtils.getInteger(map, "buyerId"), mainBuyerId))
.sorted(Comparator.comparing(map -> (BigInteger) MapUtils.getObject(map, "maxDebtDay"), Comparator.reverseOrder()))
```
这两种写法都可以将排序结果倒序输出。如果要正序排序,可以将`reversed()`方法或`Comparator.reverseOrder()`静态方法去掉即可。
阅读全文