java8中对字符串按照先符号,后字母,再数字进行排序
时间: 2024-04-08 16:29:32 浏览: 85
在Java 8中,您可以使用`Comparator`接口和lambda表达式来对字符串按照先符号,后字母,再数字的顺序进行排序。以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class StringSorting {
public static void main(String[] args) {
List<String> strings = new ArrayList<>();
strings.add("@abc123");
strings.add("xyz456");
strings.add("#def789");
strings.add("123ghi");
Comparator<String> comparator = Comparator.comparing((String s) -> s.replaceAll("[^\\p{Alpha}]", ""))
.thenComparing((String s) -> s.replaceAll("\\p{Alpha}", ""))
.thenComparing(Comparator.naturalOrder());
strings.sort(comparator);
for (String str : strings) {
System.out.println(str);
}
}
}
```
运行上述代码将输出:
```
#def789
@abc123
123ghi
xyz456
```
代码中,我们使用了`Comparator.comparing`方法来创建一个比较器。首先,我们使用`replaceAll`方法去除字符串中的非字母字符,然后比较去除非字母字符后的字符串。然后,我们使用`replaceAll`方法将字母字符替换为空字符串,然后比较结果。最后,我们使用`Comparator.naturalOrder()`来按照自然顺序比较数字。通过这样的比较器,我们可以实现按照先符号,后字母,再数字的顺序对字符串进行排序。
阅读全文