Javaストリームを使用してArrayListの中で最小サイズのリストのインデックスを取得

ZAK ZAK:

私は、リスト1 =(1,2,3)とlist2の=(0,1)のように、整数のリストのリストを持っています。

リストの私のリストは、リスト1とリスト2が含まれています。これは、より多くの含まれている可能性がありますが、たとえば、私は2つだけのリストを取りました。

質問は、Javaストリームを使用して最小サイズで、リストのインデックスを取得することです。

ここに私のプログラムがあり、それは、ループ方式のためにのみ使用して動作します。

import java.util.ArrayList;

public class Example {

     public static void main( String[] args ) {


         ArrayList<Integer> list1 = new ArrayList<>();
         list1.add(1);list1.add(2);list1.add(3);

         ArrayList<Integer> list2 = new ArrayList<>();
         list2.add(0);list2.add(1);

         ArrayList<ArrayList<Integer>> listOLists = new ArrayList<>();
         listOLists.add(list1);
         listOLists.add(list2);
         printTheIndexOfTheListWithTheMinSize(listOLists);
     }

    private static void printTheIndexOfTheListWithTheMinSize( ArrayList<ArrayList<Integer>> listOLists ) {
        int minSize  = listOLists.get(0).size();
        int minIndex = 0;
        int i=0;
        for ( ArrayList<Integer> list:  listOLists ) {

            if (list.size()<minSize)
            {
                minSize = list.size();
                minIndex=i;
            }
            i++;

        }
        System.out.println(minIndex);
    }
}

あなたは私のJavaストリームAPIを使用していることを行うにはどのようにヒントを与えてもらえます。

注awnserを考慮したものを取る必要がありますので、私は、重いCalculがこの方法を何度も呼んでいるという。

JB Nizet:

実際にそれがボクシングとアンボクシングを必要とするため、エレガントな、しかし...ではありません

Optional<Integer> minIndex = 
    IntStream.range(0, list.size())
             .boxed()
             .min(Comparator.comparingInt(i -> list.get(i).size()));

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=196271&siteId=1