You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java使用IntStream翻转二维数组形式图片的代码运行原理是什么

代码功能说明

这段代码的作用是垂直翻转以二维int数组存储的图像,本质是将输入二维数组的行顺序完全倒置,和手写for循环实现的行倒序效果完全一致。

前置说明

你没接触过Java Streams也没关系,你可以把Stream理解为Java提供的一套免手写循环的流式处理工具,按照「生成序列->转换元素->收集结果」的流水线逻辑运行,这段代码里用到的IntStream就是专门用来处理int类型序列的Stream实现。

逐行执行逻辑拆解

我们逐段拆这段Stream链式调用:

  • IntStream.range(0, image.length):生成左闭右开的连续int序列,取值范围是0到image.length - 1,正好覆盖输入二维数组所有行的下标。比如输入的image有3行,就会生成0、1、2三个整数。
  • .mapToObj(i -> image[image.length - 1 - i]):对流里的每个下标i做转换:
    计算倒序后的行下标image.length - 1 - i,直接取出原数组对应下标的整行数据。比如总共有3行时,i=0就取第2行,i=1取第1行,i=2取第0行,这一步执行完后,流里的元素就是已经倒序排列的所有行数组。
  • .toArray(int[][]::new):把流里已经倒序的所有行数据,收集为一个新的二维int数组返回,其中int[][]::new是Java的方法引用语法,用来告诉toArray方法需要生成int类型的二维数组来存储结果。
实际运行示例

假设输入的image为:

int[][] image = {
  {1,2,3},
  {4,5,6},
  {7,8,9}
};

执行后返回的结果为:

{
  {7,8,9},
  {4,5,6},
  {1,2,3}
}

等价于以下手写for循环的实现:

public int[][] flipImage(int[][] image) {
    int[][] result = new int[image.length][];
    for (int i = 0; i < image.length; i++) {
        result[i] = image[image.length - 1 - i];
    }
    return result;
}

内容的提问来源于stack exchange,提问作者pianoman102

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:09:00