当前位置: 首页 > 知识库问答 >
问题:

使用java stream获取arrayList中最小大小列表的索引

姜增
2023-03-14

我有一个整数列表,像list1=(1,2,3)和list2=(0,1)。

我的列表包含清单1和清单2。它可以包含更多,但对于这个例子,我只取了两个列表。

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);
    }
}

注意,我在一个沉重的calcul中多次调用这个方法,所以awnser应该考虑到这一点。

共有1个答案

巴洲
2023-03-14

不是很优雅,因为它需要拳击和松开拳击,但是...

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