我对您的示例结果感到困惑,因为它与您的问题不符。
你说结果应该是大小 N = 4,但你的例子是大小 3。你说通过从每个列表中选择一个数字来构建结果,然后你从列表 C (3, 2) 中选择了 2 个数字。
我已经给出了两种解决方案,因为我不知道你想要哪一种。
public static void main(String[]args) {
List<Integer> A = Arrays.asList(22, -1, -10);
List<Integer> B = Arrays.asList(3, -2, 54);
List<Integer> C = Arrays.asList(-12, 3, 2);
List<Integer> D = Arrays.asList(40, 4, -3);
List<List<Integer>> listOfLists = Arrays.asList(A, B, C ,D);
// get the min positive integers by picking one from each lsit
List<Integer> positiveMinsPickOne = listOfLists.stream()
.map((list -> list.stream().filter(num -> num >= 0).min(Integer::compareTo).get()))
.collect(Collectors.toList());
System.out.println(positiveMinsPickOne);
// get the min positive integers by picking over all integers
List<Integer> positiveMinsPickAll = listOfLists.stream()
.flatMap(List::stream)
.filter(num -> num > 0)
.sorted()
.limit(listOfLists.size())
.collect(Collectors.toList());
System.out.println(positiveMinsPickAll);
}
输出:
[22, 3, 2, 4]
[2, 3, 3, 4]