Java 在二维数组的行中创建最大值数组
例如,我创建了一个二维整数数组Java 在二维数组的行中创建最大值数组,java,java-stream,Java,Java Stream,例如,我创建了一个二维整数数组 int[][] source = new int[][]{ new int[]{1, 2, 3, 4}, new int[]{-3, -7, -5, -5}, new int[]{11, 3, 7, 9}, new int[]{121, -41, 515, -466} }; 现在,我正在创建一个跨行的最大值数组,如下所示: int[] rowMax = new int[source.length];
int[][] source = new int[][]{
new int[]{1, 2, 3, 4},
new int[]{-3, -7, -5, -5},
new int[]{11, 3, 7, 9},
new int[]{121, -41, 515, -466}
};
现在,我正在创建一个跨行的最大值数组,如下所示:
int[] rowMax = new int[source.length];
for (int i = 0; i < source.length; i++) {
int m = Integer.MIN_VALUE;
for (int j = 0; j < source[0].length; j++) {
if (source[i][j] > m) {
m = source[i][j];
}
}
rowMax[i] = m;
}
我可以将我的内部循环更新为:
int[] rowMax = new int[source.length];
for (int i = 0; i < source.length; i++) {
rowMax[i] = Arrays.stream(source[i]).max().getAsInt();
}
int[]rowMax=newint[source.length];
for(int i=0;i
但我不确定如何在可能的情况下进一步使用流来完成
int[]rowMax
。这是否可以转换?您可以尝试更新迭代以迭代流
然后使用
看起来就像
int[] rowMax = Arrays.stream(source)
.mapToInt(ints -> Arrays.stream(ints).max().getAsInt())
.toArray();
IMHO,但这也可以表示为:
int[] rowMax = Stream.of(source) // Stream<int[]> for all rows
.mapToInt(ints ->
Stream.of(ints) // Stream<int[]> for each row level
.flatMapToInt(Arrays::stream) // IntStream
.max().orElse(Integer.MIN_VALUE)) // return max per int[] with default value
.toArray(); // to array
int[]rowMax=Stream.of(source)//所有行的流
.mapToInt(整数->
Stream.of(ints)//每行级别的流
.flatMapToInt(数组::流)//IntStream
.max().orElse(Integer.MIN_值))//使用默认值返回max per int[]
.toArray();//排列
您可以尝试更新迭代以迭代流
然后使用
看起来就像
int[] rowMax = Arrays.stream(source)
.mapToInt(ints -> Arrays.stream(ints).max().getAsInt())
.toArray();
IMHO,但这也可以表示为:
int[] rowMax = Stream.of(source) // Stream<int[]> for all rows
.mapToInt(ints ->
Stream.of(ints) // Stream<int[]> for each row level
.flatMapToInt(Arrays::stream) // IntStream
.max().orElse(Integer.MIN_VALUE)) // return max per int[] with default value
.toArray(); // to array
int[]rowMax=Stream.of(source)//所有行的流
.mapToInt(整数->
Stream.of(ints)//每行级别的流
.flatMapToInt(数组::流)//IntStream
.max().orElse(Integer.MIN_值))//使用默认值返回max per int[]
.toArray();//排列
您可以按如下方式执行:
int[] maxNumbers = Arrays.stream(source) //Stream<int[]>
.mapToInt(a -> Arrays.stream(a).max().getAsInt()) // IntStream
.toArray();// int[]
int[]maxNumbers=Arrays.stream(源)//stream
.mapToInt(a->Arrays.stream(a).max().getAsInt())//IntStream
.toArray();//int[]
- 通过
数组从二维数组创建流。流(源)
- 将每行(
)映射到最大值int[]
- 将结果收集到数组中
int[] maxNumbers = Arrays.stream(source) //Stream<int[]>
.mapToInt(a -> Arrays.stream(a).max().getAsInt()) // IntStream
.toArray();// int[]
int[]maxNumbers=Arrays.stream(源)//stream
.mapToInt(a->Arrays.stream(a).max().getAsInt())//IntStream
.toArray();//int[]
- 通过
数组从二维数组创建流。流(源)
- 将每行(
)映射到最大值int[]
- 将结果收集到数组中
jshell
?如果与问题没有直接关系,请删除您的问题。谢谢:)你为什么在这里加上jshell
?如果与问题没有直接关系,请删除您的问题。谢谢:)
int[] maxNumbers = Arrays.stream(source) //Stream<int[]>
.mapToInt(a -> Arrays.stream(a).max().getAsInt()) // IntStream
.toArray();// int[]