我对编程相当陌生。我正在做这个任务,我无法弄清楚为什么我得到"没有合适的排序方法"错误。这是从 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;
}
}
我已经尝试过,而不是在可比之后写"字符串",而是键入"目录比较器",但它不起作用。我做错了什么? 总体目标是比较数组列表的元素,并使两位数的元素大于一位数的元素。我认为返回 -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*/));