zak*_*zak 3 java collections java-stream
我有一个整数列表列表,如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);
}
}
Run Code Online (Sandbox Code Playgroud)
能否请您使用Java流API向我提示如何做到这一点.
请注意,我在重度计算中多次调用此方法,因此awnser应该考虑到这一点.
不是很优雅,因为它需要拳击和拆箱,但......
Optional<Integer> minIndex =
IntStream.range(0, list.size())
.boxed()
.min(Comparator.comparingInt(i -> list.get(i).size()));
Run Code Online (Sandbox Code Playgroud)