簡體   English   中英

清單 <Integer> 物體按長度順序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM