在List对象中对List进行排序

时间:2015-08-28 15:54:51

标签: java sorting arraylist collections

我们有一个场景,我们必须根据名称对基于名称的列表对象进行排序。请找到以下Java对象。

上课

class Make implements comparable<Make> {
    String name;
    List<Model> models;
    ....
    getter..
    setters..

    @Override
    public intcompareTo(object o) {
        return name.compareTo(o.name);
    }
}

模型类

class Model implements comparable<Model> {
    String name ;
    ....
    getter..
    setters..

    @Override
    public intcompareTo(object o) {
        return name.compareTo(o.name);
    }
}

主类

class main {
    public static void main(String[] args) {

        List<Make> make = new ArrayList<Make>();
        Make make1 = new Make();
        make1.addName("B");

        Model model1 = new Model()
        model1.setName ("B");
        make1.addModel(model1);

        Model model2 = new Model()
        model2.setName ("A");
        make1.addModel(model2);

        make.add(make1);

        // This will sort the make Object but not the model. 
        collections.sort(make);
    }
}

我们想要对名称上的Make和Model进行排序。 如何在上面的场景中对两个make Models进行排序。?

2 个答案:

答案 0 :(得分:2)

遍历每个Make对象元素并对其列表字段进行排序

for(Make makeElement : make)
{
    Collections.sort(makeElement.models);
}

答案 1 :(得分:0)

就个人而言,我会选择@James解决方案。

但如果您真的想通过一次通话对所有内容进行排序(注意内部有很多次通话:))

Make.intcompareTo(object 0)更改为:

public intcompareTo(object 0)
{
  if(models!=null){
    Collection.sort(models);
  }
  return name.compareTo(o.name);
}