习惯了C#中的LINQ,在java中感到很不方便。要将一个实体数组(即元素为实体的数组)List进行排序,要怎么写呢?代码长的可笑:
实体类
public class Menu {
private int id;
private String name;
private String title;
private String url;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
假设现在有一个List
menus = menus
.stream()
.sorted(Comparator.comparing(Menu::getId).reversed())
.collect(Collectors.toList());
- 1
- 2
- 3
- 4
再看看C#
menus = menus.OrderByDescending(s => s.Id).ToList();
- 1
随着C#也能跨平台,是不是.NET的春天快到了?
2019.08.17
排序的时候,如果排序字段内容是数值,但字段类型是字符串,那么应该先转换成数值再比较,否则结果不准确。如何转换呢,可以这样写:
.sorted(Comparator.comparing(s -> Long.parseLong(s.getT())))
- 1