包含列表索引值列表的Java排序列表?

时间:2011-03-17 07:03:04

标签: java list sorting

我有一个如下所示的嵌套列表(但它在一个主列表中有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:感谢你的帮助,让它运转起来,但它似乎是先放大号而后大号,我希望能改变它,所以它从最大到最小,因为我

1 个答案:

答案 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);
    }
}

请注意,这是使用泛型 - 希望您的真实代码也是如此。