Java 按内部ArrayList中的索引对ArrayList中的ArrayList进行排序

Java 按内部ArrayList中的索引对ArrayList中的ArrayList进行排序,java,class,sorting,arraylist,Java,Class,Sorting,Arraylist,我有一个firstName、lastName、address、email和phoneNumber的arrayList,还有一个包含多个“条目”的arrayList,每个条目都有5个索引。获取和设置所有5个值的方法都在Entry类中,而添加、修改、删除和排序条目则在class Contact List中完成 我正在尝试按姓氏对条目进行排序,并在ContactList类中打印出来。我有: public void listEntries() { Collections.sort

我有一个firstName、lastName、address、email和phoneNumber的arrayList,还有一个包含多个“条目”的arrayList,每个条目都有5个索引。获取和设置所有5个值的方法都在Entry类中,而添加、修改、删除和排序条目则在class Contact List中完成

我正在尝试按姓氏对条目进行排序,并在ContactList类中打印出来。我有:

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

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

            entries.get(i).print();
        }
    }
public void listEntries()
{
集合。排序(条目);
对于(int i=0;i

我知道我缺少定义排序依据的内容,但我甚至不确定是否应该使用Collections.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));
    }
});
Collections.sort(条目,新比较器(){
@凌驾
公共整数比较(列表o1,列表o2){
返回o1.get(1).compareTo(o1.get(1));
}
});

最好用所讨论的语言(Java?)标记问题,以便观看该标记的人看到。对不起,我对数组列表集合排序或实现“可比较接口的方法”不是很有经验。我可以很容易地将import java.util.Comparator放入;但除此之外,我一无所知。我不知道把它放在哪里,或者它应该包含什么,或者它是否关系到我把它放在什么类中,或者我可以从哪里调用这个方法。任何额外的线索都会有所帮助。你有类条目,它有属性firstName、lastName、address、email等。你还有一些getter等。可比较接口的实现很简单。在要排序的属性的Entry类中实现compareTo方法。例如,您希望对lastName上的记录进行排序,因此该方法将类似于“public int compareTo(Object Object){if(Object instanceof Entry){return lastName.compareTo(((Entry)Object).getLastName();}else…”检查此方法的约定。如果您希望对更多属性进行排序,可以使用更多比较