我们有一个场景,我们必须根据名称对基于名称的列表对象进行排序。请找到以下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进行排序。?
答案 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);
}