//For Class A
public class NameCompare implements Comparator<A>
{
public int compare(A a1, A a2){
if(a1.findName()> a2.findName()){
return 1;
}
else if(a1.findName()== a1.findName())
return 0;
else {
return -1;
}
}
}
//For Class B
public class ACompare implements Comparator<B>
{
public int compare(B b1, B b2){
if(b1.getId()> b2.getId()){
return 1;
}
else if((b1.getId()== (b2.getId()())
return 0;
else {
return -1;
}
}
}
//Main Class
ArrayList<A> copy = (ArrayList<A>)B.getA();
Collections.sort(copy, new NameCompare());
Collections.sort(copy, new ACompare());
for (A a : copy) {
System.out.println(a);
}
我是Java新手。据我所知,上述方法可能是使用2个不同类的属性对列表进行排序的错误方法。假设类B包含类A的数组列表。我如何对列表进行排序,假设我想显示一个升序id,然后是名称
答案 0 :(得分:0)
您的问题并不完全清楚,但我建议您(使用您的名称和ID示例)定义一个具有两个字段的Person:name和id。然后,您可以定义一个比较器,首先比较id,然后比较名称。通过这种方式,您可以以正确的方式对Person类型的对象进行排序。
如果您需要列出&#34;列表&#34;,应该对其进行排序,那么您需要更彻底地解释您的问题。