创建比较器以传递给 .sort() in java not suitable method 错误

Creating a comparator to pass to .sort() in java not suitable method error

我对编程还很陌生。我正在做这项作业,但我无法弄清楚为什么会出现 "no suitable method for sort" 错误。这是从 DirectorySortDemo 进行排序的调用:

public class DirectorySortDemo{
  public static void main(String[] args){
    String dirNames = {"dir12", "dir1", "dir11", "dir10", "dir2"};
    ArrayList<String> directories = new ArrayList<>(Arrays.asList(dirNames));
    Collections.sort(directories, new DirectoryComparator());
    }
}

这是比较器:

public class DirectoryComparator implements Comparable<String> {
   @Override
   public int compareTo(String o) {
     return -1;
   }
}

我试过,不是在 Comparable 后面写 "String",而是输入 "DirectoryComparator",但是没有用。我究竟做错了什么? 总体目标是比较数组列表的元素,并使具有两位数的元素大于具有一位数的元素。我认为 return -1 声明没有什么不同。虽然,我尝试编写一个解决方案,但错误仍然存​​在。

Collections.sort 接受一个 Comparator<T> 作为第二个参数,你给它一个 Comparable<T>。这就是弹出错误的原因。

即使 Collections.sort 确实接受了 Comparable<T>,您的实施也违反了 Comparable 的一般合同。

您似乎只想对字符串进行逆序排序。你可以这样做:

Collections.sort(directories, Comparator.reverseOrder());

如果我误解了你,而你实际上想以某种自定义方式对其进行排序,你可以这样做:

Collections.sort(directories, Comparator.comparing(s -> /*map the string to something you want to compare*/));