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/