Java 如何在ArrayList中选择我的列表的哪一列<;列表>;用于排序我的ArrayList?

Java 如何在ArrayList中选择我的列表的哪一列<;列表>;用于排序我的ArrayList?,java,sorting,arraylist,compare,Java,Sorting,Arraylist,Compare,我想对包含多个列表的ArrayList进行排序。换句话说,我有一个ArrayList,我想根据内部列表的一个元素进行排序。 例如,以下列表中的标记: [that,IN,157],[that,WDT,69],[that,DT,33]] 我希望能够选择排序时应该使用哪一列。我想使用下面的代码。但是,它不接受内部方法的输入变量i public void sortCheckedTags(int i){ Collections.sort(checkedTags, new Comparator&l

我想对包含多个列表的ArrayList进行排序。换句话说,我有一个ArrayList,我想根据内部列表的一个元素进行排序。 例如,以下列表中的标记: [that,IN,157],[that,WDT,69],[that,DT,33]]

我希望能够选择排序时应该使用哪一列。我想使用下面的代码。但是,它不接受内部方法的输入变量i

public void sortCheckedTags(int i){

    Collections.sort(checkedTags, new Comparator<List>(){
        public int compare(List  item1, List  item2)
        {
            return  ((String)item1.get(i)).compareTo(((String)item2.get(i)));
        }
    });
}
public void sortchecketdtags(inti){
Collections.sort(checkedTags,newcomparator(){
公共整数比较(列表项1、列表项2)
{
返回((字符串)item1.get(i)).compareTo((字符串)item2.get(i));
}
});
}

有什么建议吗?

像这样声明您的方法:

public void sortCheckedTags(final int i)
您可以在以下位置查看文档:

匿名类无法访问其封闭范围中未声明为final或有效final的局部变量


您可以将其拆分为一个带有3个
case
语句的
开关,每个字段对应一个待排序语句,因为您无法重写
compare
函数的方法签名,因为您试图重写Java自己的
compare
方法

然后,在每个case语句中,为
i
使用不同的值,即1、2或3