我想对包含多个列表的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)));
}
});
}
有什么建议吗?
答案 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。