编写按顺序排序List<Integer>
个对象的Comparator对象的代码
他们的长度。
所以我知道如何编写比较器,但我对如何将对象添加到List<Integer>
感到困惑,以便列表包含例如:[1,2,3],[1 ,2,3,4,5],[99,102,301,31,31]。
还是我误会?
由于
答案 0 :(得分:1)
我认为您应该使用List.size()
进行比较
答案 1 :(得分:-1)
您可以创建一个Comparator
来排序Collection
个对象。这可以一般地完成。特别是,您案例中Collection
为List
的事实与排序无关。而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());
}
};
}
}