Java 获取 String CompareTo 作为比较器对象

2022-08-31 20:20:36

我想通过String.CompareTo比较器对字符串的静态数组进行排序和二进制搜索。

问题在于,排序和二进制搜索都需要传入比较器对象 - 那么我如何传递内置的字符串比较器呢?


答案 1

您可以编写自己的比较器

public class ExampleComparator  implements Comparator<String> {
  public int compare(String obj1, String obj2) {
    if (obj1 == obj2) {
        return 0;
    }
    if (obj1 == null) {
        return -1;
    }
    if (obj2 == null) {
        return 1;
    }
    return obj1.compareTo(obj2);
  }
}

答案 2

基于 java.util.Comparator.comparing(...) 的 Java 8 解决方案

Comparator<String> c = Comparator.comparing(String::toString);

Comparator<String> c = Comparator.comparing((String x) -> x);