static int minValueOfElements(ArrayList<ArrayList<Integer>> input){
// Return the minimum value in the input list of lists (matrix)
return 0;
}
我需要获取数组列表中的所有元素,例如:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
需要返回1.
有一个数组列表,其中包含包含元素的数组列表。所以我需要找出如何获得所有这些元素。
答案 0 :(得分:0)
public Integer getMinimumOfListOfLists(List<List<Integer>> listOfLists) {
List<Integer> mergedList = new ArrayList<>();
//merge all
for(int i=0; i<listOfLists.size(); i++) {
mergedList.addAll(listOfLists.get(i));
}
//sort
Collections.sort(mergedList);
// return first element from sorted list - this will be the smallest element
return mergedList.get(0);
}
这个答案是从所有列表中的所有元素中获取最小元素。不确定你究竟在寻找什么。
答案 1 :(得分:0)
我想让你的意思是: 我认为第一个我们应该压扁列表然后获得最大元素。 如果您使用的是JDK7,我建议使用Guava来解决它。 如果您使用的是JDK8,那将非常简单。 这是一个例子:
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public class FlattenCollection {
public static void main(String[] args) {
List<List<Integer>> wrapList = new ArrayList<>();
List<Integer> first = new ArrayList<>();
first.add(1);
first.add(2);
List<Integer> second = new ArrayList<>();
second.add(3);
second.add(4);
wrapList.add(first);
wrapList.add(second);
System.out.println(wrapList);
//JDK7
List<Integer> result1 = Lists.newArrayList(Iterables.concat(wrapList));//flatten list
System.out.println(result1);
Integer max1 = Collections.max(result1);//max element
System.out.println(max1);
//JDK8
List<Integer> result2 = wrapList.stream().flatMap(List::stream).collect(Collectors.toList());//flatten list
System.out.println(result2);
Integer max2 = result2.stream().max((o1, o2) -> o1 - o2).get();//max element
System.out.println(max2);
}
}
输出:
[[1, 2], [3, 4]]
[1, 2, 3, 4]
4
[1, 2, 3, 4]
4