按长度</integer>的顺序列出<integer>对象

时间:2014-12-05 11:31:49

标签: java list object

编写按顺序排序List<Integer>个对象的Comparator对象的代码 他们的长度。

所以我知道如何编写比较器,但我对如何将对象添加到List<Integer>感到困惑,以便列表包含例如:[1,2,3],[1 ,2,3,4,5],[99,102,301,31,31]。

还是我误会?

由于

2 个答案:

答案 0 :(得分:1)

我认为您应该使用List.size()进行比较

答案 1 :(得分:-1)

您可以创建一个Comparator来排序Collection个对象。这可以一般地完成。特别是,您案例中CollectionList的事实与排序无关。而Collection包含Integer个对象的事实则更不相关。您可以编写一个可以对Comparator个对象以及List<Integer>个对象进行排序的通用LinkedHashSet<String>。唯一相关的部分是Collection#size()方法。

这是MCVE

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class CollectionBySizeComparatorTest
{
    public static void main(String[] args)
    {
        List<Integer> list0 = Arrays.asList(1,2,3);
        List<Integer> list1 = Arrays.asList(1,2,3,4);
        List<Integer> list2 = Arrays.asList(1,2);
        List<Integer> list3 = Arrays.asList(1,2,3,4,5);
        List<Integer> list4 = Arrays.asList(1);
        List<List<Integer>> lists = 
            Arrays.asList(list0, list1, list2, list3, list4);

        System.out.println("Before sorting");
        for (List<Integer> list : lists)
        {
            System.out.println(list);
        }

        Collections.sort(lists, collectionBySizeComparator());

        System.out.println("After sorting");
        for (List<Integer> list : lists)
        {
            System.out.println(list);
        }
    }

    private static Comparator<Collection<?>> 
        collectionBySizeComparator()
    {
        return new Comparator<Collection<?>>()
        {
            @Override
            public int compare(Collection<?> c0, Collection<?> c1)
            {
                return Integer.compare(c0.size(), c1.size());
            }
        };
    }
}