当前位置: 首页 > 知识库问答 >
问题:

无法找到comareTo当接收可比对象[]

祁承嗣
2023-03-14

问题是该方法不确定a和b是否可比较,因此编译器会抛出一个找不到的符号进行比较。

public class Merge {
    public ArrayList<Object> sorted(Object[] a, Object[] b) {

        int i, j, k;
        i = j = k = 0;
        ArrayList<Object> c = new ArrayList<>();
        while (i < a.length || j < b.length) {
            if (i == a.length) {
                for (j = j; j < b.length; j++) {
                    c.add(k, b[j]);
                    k++;
                }
                break;
            }
            else if (j == b.length) {
                for (i = i; i < a.length; i++) {
                    c.add(k, a[i]);
                    k++;
                }
                break;
            }
            else {
                if ( a[i].equals(b[j]) || a[i].compareTo(b[j]) < 0 ) {
                    c.add(k, a[i]);
                    i++;
                    k++;
                }
                else {
                    c.add(k, b[j]);
                    j++;
                    k++;
                }
            }
        }
        return c;
    }
}

该代码在与Integer一起使用时有效。我希望能够使用例如,sorted(a,b)beinga=Person[]b=Person[]。当然,在人的内部,方法是比较和平等的。

我应该在这个类中用ObjectType实现和扩展comparable并重写compareTo吗?

共有2个答案

翟俊名
2023-03-14

要在对象上调用comareTo(),类必须实现可比较的接口并覆盖comareTo()方法。由于Object类不实现可比较的,上述代码将始终给你编译错误。

如果只想传递Person对象,则需要将签名更改为接受Person[]数组。否则,您需要重写toString()方法(使用有意义的实现)并更改a[i]。将(b[j])a[i]进行比较。toString()。比较(b[j].toString())

桑坚成
2023-03-14

我建议你把签名改成

public static <T extends Comparable<T>> List<T> sorted(T[] a, T[] b)

你可以比较a[i]。比较(b[i])返回相应类型的列表。

 类似资料:
  • 我正在做一个应用程序,我想注册一个新的广播接收器。但是,当意图被触发时,应用程序无法找到接收器类,并以以下错误失败: System.err:无法实例化接收器org.nativescript.ntngcallerid.phoneCallReceiver:java.lang.ClassNotFoundException:在路径:dexpathList[[zip文件“/data/app/org.nati

  • 当我试图使用MongoDB Sink应用程序starter时,我遇到了这个问题,其中包含由JDBC源代码读取的信息: Class!意味着这是一个。我打印在一个日志中,这是对象的JSON。这是一个bug吗?其他接收器工作得很好。

  • 我已经在互联网上搜索了一两个星期,想找到一个UDP客户端程序,它可以同时发送和接收数据,但是对于c#来说,没有关于这个主题的内容。在过去的几天里,我尝试创建一个UDP客户端,其中包含一个接收数据的线程。 发送UDP数据包效果很好,但程序无法接收我发送到的服务器,我相信服务器正在将所有数据包发送到不同的端口。 我如何修复这个程序? 有没有一种更简单的方法来进行UDP编程,比如用于TCP的Stream

  • 我正在学习GCM(谷歌云消息传递,旧的不建议使用的名称是C2DM)。我使用不同的设备。操作运行良好,即使应用程序关闭。但是在nexus平板电脑上,当应用程序关闭时会发生错误。如果应用程序正在进行,我的GCM代码在我尝试的所有设备上都能工作。现在:我寻找这些问题,我发现有其他的错误清单。如果我的清单是错误的,为什么除了nexus平板电脑以外的其他设备都正确执行我的代码?我可以认为我的清单是错误的吗?

  • 问题内容: 我有一个大型的maven项目,该项目使用pmd插件进行代码质量检查。 自从我开始使用Pmd插件以来,我收到以下警告消息: 我用谷歌搜索,发现我需要实现jxr插件。 所以我将以下内容添加到主pom.xml文件的build属性中。 哭泣并没有真正改变任何东西。 为了解决此警告消息,我需要实现什么想法? 输出 谢谢! 问题答案: 您应将添加到 部分。 重新运行并享受。 顺便说一句,也许您需要

  • 我有一个Angular 4和Java/Spring MVC/Jhipster网站,我正试图使用本教程创建一个websocket(使用sock js和stomp.js)。我可以连接到websocket,但是当我尝试从Java代码向客户端发送数据时,什么也没有发生。请帮帮我。 下面,我只是试图访问我的浏览器中的http://localhost:9001/api/websocket/testSend,并