为了账号安全,请及时绑定邮箱和手机立即绑定

没有找到适合 Collections.sort() 的方法

没有找到适合 Collections.sort() 的方法

慕尼黑5688855 2024-01-05 19:59:42
我正在通过一些示例来学习 Java,但似乎我无法使用它Collections.sort来对我的列表进行排序。目前,我的代码如下:// Person class in package application.domainpackage application.domain;public class Person implements Identifiable, Comparable<Identifiable> {    private String name;    private String id;    // ...Constructor...    // ...Accessors for getName and getPersonID...    @Override // from interface "Identifiable"    public String getID(){        return getPersonID();    }    public int compareTo(Identifiable another) {        return this.getID().compareTo(another.getID());     }    //... toString ...}// Register class implementationpackage application.domain; import java.util.*;public class Register {    private HashMap<String, Identifiable> registered;    // ...Constructor - initialize hashmap ...    public void add(Identifiable toBeAdded){        this.registered.put(toBeAdded.getID(), toBeAdded);    }    // get    public Identifiable get(String id){ return this.registered.get(id); }    // getAll - must be generalized to work    public List<Identifiable> getAll(){        return new ArrayList<Identifiable>(registered.values());    }    // sortAndGetEverything (ERROR)    public List<Identifiable> sortAndGetEverything(){        List<Identifiable> all = new ArrayList<Identifiable>(registered.values());        Collections.sort(all); // <- part of code that gives an error        return all;    }} *请注意,带有省略号的注释用于缩写不相关的部分我怀疑的是 Person 类toCompare可能是问题,因为它正在比较字符串...但是,我在网上查找了它,似乎比较两个不同的字符串对于.compareTo方法是有效的。我尝试将 ArrayList 转换为 List,但仍然出现相同的错误。我不知道,所以如果有人对解决这个问题有任何建议,我不想这样做。先感谢您。
查看完整描述

2 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

您可以Identifiable从以下位置扩展接口Comparable

public interface Identifiable extends Comparable<Identifiable> {
    String getID();  
}

现在您也不需要在类中实现 Comparable Person,并且 Collections.sort() 现在应该可以工作


查看完整回答
反对 回复 2024-01-05
?
catspeake

TA贡献1111条经验 获得超0个赞

您只需在第一个 java 文件中添加一行:

import java.lang.*

我遇到了和你一样的错误,我通过上面提到的解决方案解决了它。我认为发生这种情况的原因是编译器无法识别客户的compareTo函数。


查看完整回答
反对 回复 2024-01-05
  • 2 回答
  • 0 关注
  • 185 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信