list<DO>根据前端传的字段不同list排序方式不同
时间: 2023-12-08 17:06:39 浏览: 125
list自绘和list列排序
可以使用Java 8中的Stream API和Comparator接口来实现。
假设我们有一个DO类,其中有三个字段:name、age和salary。
首先,我们可以定义一个Comparator接口,根据传入的字段名和排序方式来比较两个DO对象的大小:
```java
public class DOComparator implements Comparator<DO> {
private String fieldName;
private boolean ascending;
public DOComparator(String fieldName, boolean ascending) {
this.fieldName = fieldName;
this.ascending = ascending;
}
@Override
public int compare(DO o1, DO o2) {
int result;
switch (fieldName) {
case "name":
result = o1.getName().compareTo(o2.getName());
break;
case "age":
result = Integer.compare(o1.getAge(), o2.getAge());
break;
case "salary":
result = Double.compare(o1.getSalary(), o2.getSalary());
break;
default:
throw new IllegalArgumentException("Invalid field name: " + fieldName);
}
return ascending ? result : -result;
}
}
```
然后,我们可以根据前端传入的字段名和排序方式构造出相应的Comparator对象,并使用Stream API来对list进行排序:
```java
List<DO> list = ...; // 假设这是要排序的list
String fieldName = ...; // 前端传入的字段名
boolean ascending = ...; // 前端传入的排序方式,true表示升序,false表示降序
Comparator<DO> comparator = new DOComparator(fieldName, ascending);
list.sort(comparator); // 使用Stream API对list进行排序
```
这样,根据前端传的字段不同,我们就可以对list进行不同的排序了。
阅读全文