gpt4 book ai didi

Java 嵌入式比较器类

转载 作者:行者123 更新时间:2023-12-02 06:13:17 25 4
gpt4 key购买 nike

我在编译我编写的一些代码时遇到问题。该代码旨在对目录数组进行排序,然后返回排序后的数组。传递到程序中的数组如下所示: {"/","/usr/","/usr/local/","/usr/local/bin/","/games/","/games/snake/","/homework/","/temp/downloads/"}

对此的排序答案是:

{ "/", "/games/", "/homework/", "/usr/", "/games/snake/", 
"/temp/downloads/", "/usr/local/", "/usr/local/bin/" }

所以基本上,最浅的目录被放置在最前面。如果两个目录具有相同的深度,我们将根据第一个单词按字母顺序排序。到目前为止我的代码是这样的:

import java.util.Arrays;
import java.util.Comparator;

public class Dirsort {

class APTComp implements Comparator<String> {

public int compare(String a, String b) {
String[] d1 = a.split("/");
String[] d2 = b.split("/");
int diff = d1.length - d2.length;

if (diff != 0) {
return diff;
} //{"/","/usr/","/usr/local/","/usr/local/bin/","/games/","/games/snake/","/homework/","/temp/downloads/"}

return a.compareTo(b);
}



public String[] sort(String[] dirs) {
Arrays.sort(dirs);
return dirs;
}
}

你们能告诉我你们发现了什么问题吗?我的 Arrays.sort() 调用是否使用我的修改比较方法?

非常感谢,朱奈德

最佳答案

默认情况下,Arrays.sort() 方法使用自然顺序进行排序。由于您的例子中的数组是字符串,因此默认情况下它将根据字符串的字母顺序进行排序。

要获得您想要的结果,您必须将自定义比较器实现的实例传递给 Arrays.sort()。

APTComp 类中的 public String[] sort(String[] dirs) 方法替换为:

public String[] sort(String[] dirs) 
{
Arrays.sort(dirs, new APTComp());
return dirs;
}

关于Java 嵌入式比较器类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21693700/

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