2012-12-09 78 views
1

我有一个arrayList的firstName,lastName,地址,电子邮件,phoneNumber和arrayList的多个“条目”,每个与所有5个索引。获取和设置所有5个值的方法都在Entry类中,而添加,修改,删除和排序条目在类Contact List中完成。ArrayList的ArrayList ArrayList的内部ArrayList

我想按姓氏排序条目,并在ContactList类中打印出来。我有:

public void listEntries() 
    { 
     Collections.sort(entries); 

     for (int i = 0; i < entries.size(); i++) 
     { 

      entries.get(i).print(); 
     } 
    } 

我知道我错过了一些东西来定义什么排序,但我甚至不知道如果我应该使用Collections.sort。有什么建议么?

+0

用问题语言(Java?)标记问题是一个好主意,以便观看该标记的人可以看到它。 – khagler

回答

1

你的类与给定的条目(我认为,该条目是该类)必须实现Comparable接口。然后你可以使用排序你的收藏。顺序由自然顺序给出(由您自行定制Comparable接口的实现方法)。

+0

对不起,但我对分类列表集合或实现“可比较接口的方法”不熟悉。我可以很容易地把导入java.util.Comparator;但除此之外,我很无能。我不知道该把它放在什么位置,或者它应该包含什么,或者它是重要的课程,还是我可以从中调用的方法。任何额外的线索都会有所帮助。 – user1890156

+0

你有类Entry,它具有属性名字,姓氏,地址,电子邮件等。你也有一些getters等。实现Comparable接口很简单。您可以在Entry类中实现要排序的属性的compareTo方法。例如,您想对lastName上的记录进行排序,所以方法看起来像“public int compareTo(Object object){if(object instanceof Entry){return lastName.compareTo(((Entry)object).getLastName());}否则......“检查这种方法的惯例。如果你想排序更多的属性,你可以使用更多的比较 – Equo

1

您错过了比较器作为sort的额外参数 - 例如,

Collections.sort(entries, new Comparator<List<String>>() { 
    @Override 
    public int compare(List<String> o1, List<String> o2) { 
     return o1.get(1).compareTo(o1.get(1)); 
    } 
});