gpt4 book ai didi

java - 将不同类型的对象与可比较的对象进行比较

转载 作者:行者123 更新时间:2023-12-02 00:15:51 24 4
gpt4 key购买 nike

A.java

public class A implements Comparable {
private String id;
private String name;

public A(String a, String b) {
id = a;
name = b;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int compareTo(Object o) {
A a = (A) o;
return id.compareTo(a.getId());
}
}

B.java

public class B implements Comparable {
private String b_id;
private String other;

public B(String a, String b) {
b_id = a;
other = b;
}

public String getBId() {
return b_id;
}

public void setBId(String id) {
this.b_id = id;
}

public String getOther() {
return other;
}

public void setOther(String other) {
this.other = other;
}

public int compareTo(Object o) {
B b = (B) o;
return b_id.compareTo(b.getId());
}
}

学习.java

public class Learn {

public static void main(String[] args) {

List<A> listA = new ArrayList<A>();
List<B> listB = new ArrayList<B>();
List<Object> listAll = new ArrayList<Object>();
listA.add(new A("aa", "bb"));
listA.add(new A("ae", "bbn"));
listA.add(new A("dfr", "GSDS"));
listB.add(new B("nm", "re"));
listB.add(new B("asd", "asfa"));

listAll.addAll(listA);
listAll.addAll(listB);
Collections.sort(listAll);
for (Object o : listAll) {
if (o instanceof A)
System.out.println(o.getId);
else if (o instanceof B)
Syatem.out.println(o.getBId);
}

}

}

我得到的错误位于行 Collections.sort(listAll);它说。

Bound mismatch: The generic method sort(List<T>) of type Collections is not applicable
for the arguments (List<Object>). The inferred type Object is not a valid substitute
for the bounded parameter <T extends Comparable<? super T>>

该怎么办?剩下的逻辑还好吗?

我想做的是拥有一个 A 列表和 B 列表,其中一个属性与 id 相同;虽然变量名不一样。即A中的id和B中的bid。现在我将两个列表放入 ListAll 中,并在同一变量 id/bid 上对它们进行排序。我让 A 和 B 实现了 Comparable。

我的 listAll 是 Object 类型?

我该怎么做?谢谢。

最佳答案

您可以添加一个公共(public)基类并在那里实现比较,如下所示:

abstract class AandBComparable implements Comparable {

public int compareTo(Object o) {
AandBComparable ab = (AandBComparable) o;
return getId().compareTo(ab.getId());
}

public abstract String getId();
}

关于java - 将不同类型的对象与可比较的对象进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11901072/

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