Comparator.comparing 从大到小排序
时间: 2023-11-14 20:09:42 浏览: 33
Comparator.comparing 可以通过传入一个 Function 对象来指定排序的依据,如果要从大到小排序,可以在这个 Function 对象中返回一个负数。例如:
```
List<Integer> list = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5);
list.sort(Comparator.comparing(i -> -i));
System.out.println(list);
```
输出结果为:[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
相关问题
comparator.comparing能给字符串排序嘛
是的,可以使用 `comparator.comparing` 对字符串进行排序。例如,以下代码将字符串列表按照字典序升序排序:
```
List<String> strings = Arrays.asList("foo", "bar", "baz");
Collections.sort(strings, Comparator.comparing(String::toString));
```
其中,`Comparator.comparing` 接受一个函数式接口作为参数,该接口将被应用于列表中的每个元素,以比较它们的顺序。在这种情况下,`String::toString` 返回每个字符串本身,因此字符串将按照字典序进行排序。
Comparator.comparing 中文排序
Comparator.comparing是Java 8中的一个静态方法,它可以用于实现自定义排序。在中文排序中,我们可以使用Comparator.comparing方法来实现按照中文字符的顺序进行排序。具体实现方法是,我们可以使用Collator类来获取一个中文排序器,然后将其传递给Comparator.comparing方法。下面是一个示例代码:
```
import java.text.Collator;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class ChineseSortDemo {
public static void main(String[] args) {
List<String> list = Arrays.asList("张三", "李四", "王五", "赵六");
Collator collator = Collator.getInstance(java.util.Locale.CHINA);
list.sort(Comparator.comparing(String::toString, collator));
System.out.println(list);
}
}
```
在上面的代码中,我们首先创建了一个包含中文字符串的列表,然后使用Collator.getInstance方法获取一个中文排序器。最后,我们将中文排序器传递给Comparator.comparing方法,以实现按照中文字符的顺序进行排序。