gpt4 book ai didi

java - 创建比较器以传递给 java 中的 .sort() 不适合方法错误

转载 作者:行者123 更新时间:2023-12-01 19:46:58 25 4
gpt4 key购买 nike

我对编程还很陌生。我正在做这项作业,但我无法弄清楚为什么我收到“没有合适的排序方法”错误。这是从 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*/));

关于java - 创建比较器以传递给 java 中的 .sort() 不适合方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52876443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com