list根据某个字段降序排序
时间: 2023-09-13 17:09:22 浏览: 146
List对象去重和按照某个字段排序的实现方法
要根据某个字段对list进行降序排序,你可以使用以下方法:
方法一: 使用Collections.sort()方法结合Comparator
你可以创建一个SortList类,并在该类中编写Sort()方法。该方法使用Collections.sort()方法和Comparator来对list进行排序。在SortList类中,你需要传入一个list、一个要排序的字段名和一个sort参数来指定排序方式。具体代码如下所示:
```
List<Student> students = new ArrayList<Student>();
SortList<Student> sortList = new SortList<Student>();
sortList.Sort(students, "age", "desc");
public class SortList<E> {
public void Sort(List<E> list, final String method, final String sort) {
Collections.sort(list, new Comparator<E>() {
public int compare(E a, E b) {
int ret = 0;
try {
Method m1 = a.getClass().getMethod(method, null);
Method m2 = b.getClass().getMethod(method, null);
if (sort != null && "desc".equals(sort)) // 倒序
ret = m2.invoke(b, null).toString().compareTo(m1.invoke(a, null).toString());
else // 正序
ret = m1.invoke(a, null).toString().compareTo(m2.invoke(b, null).toString());
} catch (NoSuchMethodException ne) {
} catch (IllegalAccessException ie) {
} catch (InvocationTargetException it) {
}
return ret;
}
});
}
}
```
这个方法使用反射来获取字段的值,并根据指定的排序方式进行排序。
方法二: 使用Java 8的stream()方法和Comparator
你可以使用Java 8的stream()方法和Comparator来对list进行排序。根据你的需求,可以使用sorted()方法和Comparator.comparing()方法来指定要排序的字段和排序方式。具体代码如下所示:
```
// 先以属性一降序,再进行属性二升序
rankList.stream().sorted(Comparator.comparing(类::属性一, Comparator.reverseOrder()).thenComparing(类::属性二));
// 先以属性一降序,再进行属性二降序
rankList.stream().sorted(Comparator.comparing(类::属性一, Comparator.reverseOrder()).thenComparing(类::属性二, Comparator.reverseOrder()));
```
上述代码中,你需要将"类"替换为你的实际类名,"属性一"和"属性二"替换为你要排序的字段名。
这两种方法都可以实现对list的降序排序,你可以根据实际情况选择使用哪种方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [java List 根据某个字段进行升降序排列](https://blog.csdn.net/weixin_33919950/article/details/92474665)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [JAVA8stream字段排序方法](https://blog.csdn.net/weixin_59244784/article/details/126709703)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文