要保留二维ArrayList的原始索引,并使用可比较类进行排序,可以按照以下步骤进行解决:
public class MyComparableClass implements Comparable {
private ArrayList list;
private int index;
public MyComparableClass(ArrayList list, int index) {
this.list = list;
this.index = index;
}
public ArrayList getList() {
return list;
}
public int getIndex() {
return index;
}
@Override
public int compareTo(MyComparableClass other) {
// 在这里实现自定义的比较逻辑
// 这里假设比较两个ArrayList的长度
return Integer.compare(this.list.size(), other.getList().size());
}
}
ArrayList> arrayLists = new ArrayList<>();
arrayLists.add(new ArrayList<>(Arrays.asList(1, 2, 3)));
arrayLists.add(new ArrayList<>(Arrays.asList(4, 5)));
arrayLists.add(new ArrayList<>(Arrays.asList(6)));
ArrayList list = new ArrayList<>();
for (int i = 0; i < arrayLists.size(); i++) {
list.add(new MyComparableClass(arrayLists.get(i), i));
}
Collections.sort(list);
现在,list中的元素已按照比较逻辑进行排序,并且可以通过MyComparableClass对象的getIndex()方法获取原始索引。