comparator.comparing能给字符串排序嘛
时间: 2023-07-16 13:11:28 浏览: 161
是的,可以使用 `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引入的一个静态方法,它属于java.util.Comparator接口的一部分,用于创建一个Comparator(比较器),该比较器根据指定的属性或函数对对象进行排序。当你需要按照某个字段或者计算结果来进行自定义排序时,这个方法非常有用。
例如,如果你有一个Person对象列表,你想按照他们的名字进行升序排序,你可以这样做:
```java
List<Person> people = ...; // 假设Person类有name字段
Comparator<Person> byName = Comparator.comparing(Person::getName);
Collections.sort(people, byName);
```
这里的`Person::getName`是一个Lambda表达式,表示获取Person对象的名字属性。`Comparator.comparing()`方法会返回一个新的比较器,根据这个名字属性进行比较。
如果你想降序排序,可以传入`reversed(byName)`:
```java
Collections.sort(people, reversed(byName));
```
Comparator.comparing 数字字符串比较
以下是使用`Comparator.comparing`进行数字字符串比较的示例代码:
```java
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
String[] arr = {"123", "45", "6789", "0", "987654321"};
Arrays.sort(arr, Comparator.comparingInt(Integer::parseInt));
System.out.println(Arrays.toString(arr));
}
}
```
输出结果为:
```
[0, 45, 123, 6789, 987654321]
```
在上述示例中,我们首先定义了一个字符串数组`arr`,其中包含了一些数字字符串。然后,我们使用`Arrays.sort`方法对该数组进行排序,排序时使用了`Comparator.comparingInt(Integer::parseInt)`作为比较器。该比较器首先将字符串转换为整型数字,然后进行比较。由于整型数字的比较规则与字符串的比较规则不同,因此可以实现数字字符串的比较。
阅读全文