如何使用来自不同类

时间:2016-02-29 15:03:27

标签: java sorting arraylist comparator

//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,然后是名称

1 个答案:

答案 0 :(得分:0)

您的问题并不完全清楚,但我建议您(使用您的名称和ID示例)定义一个具有两个字段的Person:name和id。然后,您可以定义一个比较器,首先比较id,然后比较名称。通过这种方式,您可以以正确的方式对Person类型的对象进行排序。

如果您需要列出&#34;列表&#34;,应该对其进行排序,那么您需要更彻底地解释您的问题。