那如何进行降序排序呢?
时间: 2023-07-20 07:14:33 浏览: 39
要进行降序排序,可以在 Comparator 中使用 `reversed()` 方法。例如,以下代码将一个字符串列表按字母顺序倒序排序:
```
List<String> list = Arrays.asList("apple", "banana", "orange", "pear");
list.sort((s1, s2) -> s2.compareTo(s1));
```
这里的 `(s1, s2) -> s2.compareTo(s1)` 是通过反转 `s1.compareTo(s2)` 来进行排序的。
也可以使用静态方法 `Comparator.comparing()` 和 `reversed()` 来更简单地进行排序。例如,以下代码将一个 Person 对象列表按年龄从大到小排序:
```
List<Person> people = Arrays.asList(new Person("Alice", 25), new Person("Bob", 20), new Person("Charlie", 30));
people.sort(Comparator.comparing(Person::getAge).reversed());
```
这里的 `Comparator.comparing(Person::getAge).reversed()` 是先按年龄升序排列,然后通过 `reversed()` 方法反转排序顺序,实现了按年龄从大到小排序。
相关问题
list.sort()可以对多字段进行降序排序吗?
是的,可以对多字段进行降序排序。可以通过传递多个参数来指定要排序的多个字段。例如,假设有一个包含元组的列表,其中每个元组都有两个值,分别是name和age。要按照name降序排序,如果name相同,则按照age降序排序,可以使用以下代码:
```python
my_list.sort(key=lambda x: (-x[0], -x[1]))
```
其中,`key`参数指定了一个lambda函数,该函数返回一个包含两个元素的元组,分别是name和age的负数。这样做的原因是sort方法默认进行升序排序,而将元素取负数可以实现降序排序。
list.sort()可以对多字段中的字符串进行降序排序吗?
可以的。可以使用 `sorted` 函数中的 `key` 参数来指定排序规则。例如,要按照第一个字段降序排序,按照第二个字段升序排序,可以这样做:
```python
my_list = [("apple", 3), ("banana", 2), ("orange", 1), ("banana", 1)]
sorted_list = sorted(my_list, key=lambda x: (-x[0], x[1]))
print(sorted_list)
```
输出:
```
[('orange', 1), ('banana', 1), ('banana', 2), ('apple', 3)]
```
这里使用 lambda 表达式指定排序规则,`-x[0]` 表示将第一个字段降序排序,`x[1]` 表示将第二个字段升序排序。