加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用java stream获取arrayList中min size列表的索引

发布时间:2020-12-15 05:14:54 所属栏目:Java 来源:网络整理
导读:我有一个整数列表列表,如list1 =(1,2,3)和list2 =(0,1). 我的列表列表包含list1和list2.它可以包含更多但是对于示例我只采用了两个列表. 问题是使用java流获取最小大小的列表索引. 这是我的程序,它只使用for循环方法. import java.util.ArrayList;public cla
我有一个整数列表列表,如list1 =(1,2,3)和list2 =(0,1).

我的列表列表包含list1和list2.它可以包含更多但是对于示例我只采用了两个列表.

问题是使用java流获取最小大小的列表索引.

这是我的程序,它只使用for循环方法.

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应该考虑到这一点.

解决方法

不是很优雅,因为它需要拳击和拆箱,但……

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读