是否可以覆盖字符串';Java中的compareTo方法?

是否可以覆盖字符串';Java中的compareTo方法?,java,sorting,compareto,Java,Sorting,Compareto,我有一个生成随机IP地址的类。我必须对这个列表进行排序,但我需要使用自己的逻辑来比较这两个字符串 我更愿意这样做的方式是重写String类中的compareTo方法,并使用Arrays.sort()方法,但我不知道这是否可行 我以前已经重写了compareTo方法,但我总是让它比较同一类中的实例变量 /* Sorts array in ascending order * * @param ips An array of IP Addresses * @return

我有一个生成随机IP地址的类。我必须对这个列表进行排序,但我需要使用自己的逻辑来比较这两个字符串

我更愿意这样做的方式是重写
String
类中的
compareTo
方法,并使用
Arrays.sort()
方法,但我不知道这是否可行

我以前已经重写了
compareTo
方法,但我总是让它比较同一类中的实例变量

/* Sorts array in ascending order
 *
 * @param    ips     An array of IP Addresses
 * @return           A sorted array of IP Addresses
 */
 public String[] sort(String[] ips)
 {
     String[] arr = ips;

     Arrays.sort(arr);

     return arr;
 }

我知道还有其他方法可以做到这一点,但我认为这会更优雅。如果你不同意,请随时告诉我。我不仅在努力学习如何编码,而且在努力学习如何很好地编码

这是办不到的。字符串是最终的;没有什么可以替代它

您的类应该实现自己的compareTo并执行逻辑

您可以将其全部封装在自定义类中,也可以实现自定义比较器


听起来你犯了类罪,没有充分考虑对象。对于这样的自定义逻辑,字符串原语不是最好的封装。最好将其保存在您自己设计的一个对象中。

您不能重写String的
compare to
方法,因为类是最终的。但是。

我意识到这并不能以你想要的方式回答你的问题,但在我看来,你需要的是一个类,而不是一个
字符串
类。否则,您的解决方案将被严格类型化。

您可以尝试在类数组中使用以下方法:

公共静态无效排序(T[]a,比较器c)

e、 g

Arrays.sort(arr,新的比较器(){
@凌驾
公共整数比较(字符串o1、字符串o2){
//在这里提供您的比较逻辑
返回0;
}
});

您需要实现Comparable接口和compareTO(对象)方法

类IP实现了可比较的{
字符串ip;
IP(字符串IP){
这个.ip=ip
}
字符串getIP(字符串ip){
返回ip;
}
公共int比较(IP){
返回ip.compareTo(ip.getIP());
}
}

现在您可以调用Collection.sort(object_ip)并传递ip类的对象。

这肯定比我的答案更好。我明白了。我一定会记住这一点,但是对于这个任务,我们打算使用字符串……注意,覆盖
compareTo
来改变行为(几乎)是没有意义的。尤其是
a.compareTo(b)
vs
b.compareTo(a)
其中
a
b
具有不同的行为。对象为字符串类型。不过我让它工作了,谢谢!
Arrays.sort(arr, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                            // provide your comparison logic here
                return 0;
            }
        });
class IP implements Comparable<IP>{
    String ip;
    IP(String ip){
         this.ip=ip
       }

    String getIP(String ip){
    return ip;

    }

public int compareTo(IP){
return ip.compareTo(ip.getIP());
}

}