例如,如果我有一个字符串数组{"Bob", "Bom", "Ash", "Ben"}
,如何先按第一个字母(ASCII值(排序,然后按第二个字母排序,依此类推,而不丢失以前的排序顺序?所以排序后会变成{"Ash", "Ben", "Bob", "Bom"}
?
您可以在util
包中使用Arrays
方法
import java.util.Arrays;
public class MyClass {
public static void main(String args[]) {
String[] ar = {"Bob", "Bom", "Ash", "Ben"};
Arrays.sort(ar);
System.out.println(Arrays.toString(ar));
}
}
非常直接-使用只接受前N个字母的自定义比较器(s.substring(0, N)
(:
String[] source = {"Bob", "Ben", "Bom", "Ash"};
int N = 2; // sort by first 2 chars
String[] result = Arrays.stream(source)
.sorted(Comparator.comparing(s -> s.substring(0, N)))
.toArray(String[]::new);
其他选项:
String[] names = {"Bob", "Bom", "Ash", "Ben"};
System.out.println(new TreeSet(Arrays.asList(names)));