java8中对字符串按照先符号,后数字,再字母进行排序
时间: 2024-04-08 14:30:15 浏览: 97
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("@2a");
strings.add("c@1b");
strings.add("b@3a");
Comparator<String> comparator = Comparator.comparingInt(Main::getSymbolIndex)
.thenComparingInt(Main::getNumber)
.thenComparing(Comparator.naturalOrder());
strings.sort(comparator);
for (String s : strings) {
System.out.println(s);
}
}
private static int getSymbolIndex(String s) {
for (int i = 0; i < s.length(); i++) {
if (!Character.isLetterOrDigit(s.charAt(i))) {
return i;
}
}
return s.length();
}
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());
}
}
```
在上述代码中,我们首先定义了一个字符串列表`strings`,其中包含了待排序的字符串。然后,我们创建了一个`Comparator`对象`comparator`,通过调用`Comparator.comparingInt()`方法来指定排序规则。`Main::getSymbolIndex`方法用于获取字符串中第一个符号的索引,`Main::getNumber`方法用于获取字符串中的数字。最后,我们使用`strings.sort(comparator)`方法对字符串列表进行排序,并打印排序后的结果。
请注意,上述代码仅适用于字符串中只包含一个符号和一个数字的情况。如果字符串中包含多个符号或多个数字,则需要根据具体需求进行修改。此外,还需要考虑一些边界情况,例如处理空字符串或不包含符号或数字的字符串。
阅读全文