java8中对字符串按照先字母,后数字,再符号进行排序
时间: 2024-04-08 09:30:27 浏览: 135
java8 统计字符串字母个数的几种方法总结(推荐)
在Java 8中,您可以使用`Comparator`接口来实现字符串的按照先字母,后数字,再符号的排序。下面是一个示例代码:
```java
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> strings = new ArrayList<>();
strings.add("c@1b");
strings.add("b@3a");
strings.add("@2a");
Comparator<String> comparator = Comparator.comparing(Main::getLetters)
.thenComparingInt(Main::getNumber)
.thenComparing(Main::getSymbols);
strings.sort(comparator);
for (String s : strings) {
System.out.println(s);
}
}
private static String getLetters(String s) {
StringBuilder letters = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (Character.isLetter(s.charAt(i))) {
letters.append(s.charAt(i));
}
}
return letters.toString();
}
private static int getNumber(String s) {
StringBuilder number = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (Character.isDigit(s.charAt(i))) {
number.append(s.charAt(i));
}
}
return Integer.parseInt(number.toString());
}
private static String getSymbols(String s) {
StringBuilder symbols = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (!Character.isLetterOrDigit(s.charAt(i))) {
symbols.append(s.charAt(i));
}
}
return symbols.toString();
}
}
```
在上述代码中,我们首先定义了一个字符串列表`strings`,其中包含了待排序的字符串。然后,我们创建了一个`Comparator`对象`comparator`,通过调用`Comparator.comparing()`方法来指定排序规则。`Main::getLetters`方法用于获取字符串中的字母部分,`Main::getNumber`方法用于获取字符串中的数字部分,`Main::getSymbols`方法用于获取字符串中的符号部分。最后,我们使用`strings.sort(comparator)`方法对字符串列表进行排序,并打印排序后的结果。
请注意,上述代码仅适用于字符串中只包含一个字母、一个数字和一个符号的情况。如果字符串中包含多个字母、多个数字或多个符号,则需要根据具体需求进行修改。此外,还需要考虑一些边界情况,例如处理空字符串或不包含字母、数字或符号的字符串。
阅读全文