我有三个整数类型的ArrayList,我想从那些ArrayList
中找到最大的整数值ArrayList<Integer> data1 = new ArrayList<>();
data1.add(20);
data1.add(30);
data1.add(40);
data1.add(51);
data1.add(71);
data1.add(212);
data1.add(203);
ArrayList<Integer> data2 = new ArrayList<>();
data2.add(56);
data2.add(67);
data2.add(267);
data2.add(257);
data2.add(367);
data2.add(363);
data2.add(233);
ArrayList<Integer> data3 = new ArrayList<>();
data3.add(36);
data3.add(12);
data3.add(366);
data3.add(53);
data3.add(124);
data3.add(256);
data3.add(203);
System.out.println("Largest Value = ");
有没有最简单的方法从多个arraylist中找到最大值? 谢谢!
答案 0 :(得分:6)
这是一个非常简单的,不需要重新构建数据,也不使用流。并不是说使用流有什么问题,而只是提供替代解决方案。
Integer maxValue = Math.max(Collections.max(data1), Math.max(Collections.max(data2), Collections.max(data3)));
答案 1 :(得分:4)
将最后两个列表合并到第一个列表中,然后使用Collections.max()
:
data1.addAll(data2);
data1.addAll(data3);
Integer maxValue = Collections.max(data1);
答案 2 :(得分:2)
List<Integer> newList = new ArrayList<>(data1);
newList.addAll(data2);
newList.addAll(data3);
Collestions.sort(newList);
Collections.reverse(newList);
System.out.println("max: " + newList.get(0));
或
Integer max(Integer element, List<Integer> list) {
Integer result = element;
for (Integer num : list) {
if (num > result) {
result = num;
}
}
return result;
}
使用max
方法:
Integer result = max(data1.get(0), data1);
result = max(result, data2);
result = max(result, data3);
System.out.println("max: " + result);
答案 3 :(得分:2)
Integer maxValue = Stream.of(data1, data2, data3)
.flatMap(Collection::stream)
.max(Integer::compare)
.get();
答案 4 :(得分:1)
如果你喜欢溪流&amp;共:
import package java.util.stream.Stream;
[...]
int max = Stream.of(data1.stream(), data2.stream(), data3.stream())
.flatMap(i -> i)
.mapToInt(i -> i)
.max()
.getAsInt();
答案 5 :(得分:0)
另一个流式示例,而不是平面映射到单个流
Integer max = Stream.of(data1, data2, data3)
.map(list -> list.stream().max(Integer::compare).get())
.max(Integer::compare).get();