可以使用Comparator
接口来定义排序规则。首先,我们可以创建一个实现Comparator
接口的类,然后重写compare
方法来定义排序逻辑。
以下是一个示例代码,演示如何按Java排序,如果包含则按照字母顺序排序:
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
String[] strings = {"java", "programming", "alphabet"};
Arrays.sort(strings, new CustomComparator());
System.out.println(Arrays.toString(strings)); // 输出: [alphabet, java, programming]
}
static class CustomComparator implements Comparator {
@Override
public int compare(String s1, String s2) {
if (s1.contains("java") && !s2.contains("java")) {
return -1; // s1包含"java",s2不包含"java",s1排在s2前面
} else if (!s1.contains("java") && s2.contains("java")) {
return 1; // s1不包含"java",s2包含"java",s2排在s1前面
} else {
return s1.compareTo(s2); // s1和s2都包含"java"或都不包含"java",按照字母顺序排序
}
}
}
}
在这个示例中,我们创建了一个CustomComparator
类,实现了Comparator
接口,并重写了compare
方法。在compare
方法中,我们先判断字符串s1和s2是否包含"java",根据情况返回不同的值。如果s1包含"java"而s2不包含,则s1应该排在s2前面,所以返回负值。如果s1不包含"java"而s2包含,则s2应该排在s1前面,所以返回正值。如果s1和s2都包含"java"或都不包含"java",则使用compareTo
方法按照字母顺序进行排序。
最后,我们使用Arrays.sort
方法对字符串数组进行排序,传入CustomComparator
对象作为排序规则。排序后,我们可以使用Arrays.toString
方法将排序结果输出到控制台。