如何选择ArrayList <list>中我的List的哪一列用于排序我的ArrayList?</list>

时间:2014-03-30 18:12:19

标签: java sorting arraylist compare

我想对包含多个列表的ArrayList进行排序。换句话说,我有一个ArrayList,我想根据内部List的一个元素进行排序。 例如以下列表中的标签: [[那,IN,157],[那,WDT,69],[那,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)));
        }
    });
}

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

声明你的方法:

public void sortCheckedTags(final int i)

您可以在anonymous inner classes上看到文档:

  

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

答案 1 :(得分:0)

您可以将其拆分为switch,其中包含3个case语句,每个字段对应一个要排序的字段,因为您在尝试时无法覆盖compare函数的方法签名覆盖Java自己的compare方法。

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