我有一个如下所示的嵌套列表(但它在一个主列表中有1,000个holder
列表)。假设我需要按照listEmailData
索引上每个holder
列表的值对主列表holder.get(2)
进行排序。我似乎无法弄清楚如何做到这一点,任何建议表示赞赏。
ArrayList listEmailData;
ArrayList holder = new ArrayList();
listEmailData.add(3)
listEmailData.add(323)
listEmailData.add(2342)
listEmailData.add(holder)
编辑:为了澄清,我有一个列表,其中每个列表条目包含一个子列表,在该子列表中,特定索引包含一个排名值。我需要根据每个子列表中的这个排名值对主列表进行排序。
2ND EDIT:感谢你的帮助,让它运转起来,但它似乎是先放大号而后大号,我希望能改变它,所以它从最大到最小,因为我
答案 0 :(得分:6)
您应该实施Comparator<T>
来比较列表,然后调用
Collections.sort(listEmailData, comparator);
您的比较器必须比较任何两个“子列表” - 例如通过获取特定值。例如:
public class ListComparator implements Comparator<List<Integer>>
{
private final int indexToCompare;
public ListComparator(int indexToCompare)
{
this.indexToCompare = indexToCompare;
}
public int compare(List<Integer> first, List<Integer> second)
{
// TODO: null checking
Integer firstValue = first.get(indexToCompare);
Integer secondValue = second.get(indexToCompare);
return firstValue.compareTo(secondValue);
}
}
请注意,这是使用泛型 - 希望您的真实代码也是如此。