[英]List<Integer> objects in order of length
為Comparator對象編寫代碼,該對象按List<Integer>
對象的長度順序對其進行排序。
所以我知道如何編寫比較器,但是我對如何將對象添加到List<Integer>
感到困惑,因此列表包含例如:[1,2,3],[1,2,3,4 ,5],[99,102,301,31,31]。
還是我誤會了?
謝謝
我認為您應該使用List.size()
進行比較
您可以創建一個對Collection
對象進行排序的Comparator
。 這可以一般地完成。 特別是,您的案例中的“ Collection
夾”是“ List
這一事實與排序無關。 而且您的Collection
包含Integer
對象的事實就沒有那么重要了。 您可以編寫一個可以對List<Integer>
對象以及LinkedHashSet<String>
對象進行排序的通用Comparator
。 唯一相關的部分是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());
}
};
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.