js中对一个下例的js数组
const arr = [
{ id: 1, name: “a”, age: 12 },
{ id: 2, name: “b”, age: 15 },
// ...
]
进行按age的降序排序(高 -> 低) 需要通过sort的callback来控制
代码实现: arr.sort((a, b) => b.age - a.age);
上述的数组arr在java中大多时候是用List来实现的(因为arr.length不一定)
这样的代码在java中
Public class ItemDto {
private Integer id;
private String name;
private Integer age;
}
List<ItemDto> itemList = Arrays.asList(
new ItemDto(1, "Item 1", 30),
new ItemDto(2, "Item 2", 25),
new ItemDto(3, "Item 3", 35)
);
而对这样的itemList,同样实现按age降序排序的话,则有两种做法
// 其一是先comparing 默认升序,再reversed()
List<ItemDto> sortedDescending = itemList.stream()
.sorted(Comparator.comparing(ItemDto::getAge).reversed())
.collect(Collectors.toList());
// 其二是使用了 Comparator.comparing() 方法的重载版本
// 将 Comparator.reverseOrder() 作为第二个参数传递给 comparing() 方法,这样也可以实现按照属性降序排序。
List<ItemDto> sortedDescending = itemList.stream()
.sorted(Comparator.comparing(ItemDto::getAge, Comparator.reverseOrder()))
.collect(Collectors.toList());
对比js和java的排序实现,最明显的感知是java代码量更多,java 的语法和类型系统决定了它需要更多的代码来实现类似的排序。
在排序过程中,js用了回调函数作为参数控制排序结果,而java中都是Java中是交由Comparator接口来实现。
在js中,.sort() 方法是原地排序数组的,而在java中,.sorted() 方法返回一个新的排序后的流或集合。
同步更新到自己的语雀
https://www.yuque.com/dirackeeko/wxkg90/isxlyuoz93ehqh0p
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。