使用 forEach 循环在 Java 中展平数组流

13 2025年5月 | 阅读 3 分钟

给定一个数组流。任务是使用 forEach() 方法展平数组流。

示例 1

输入: Array [][] = { {1, 2, 3}, {4, 5}, {6, 7, 8, 9} }

输出 [1, 2, 3, 4, 5, 6, 7, 8, 9]

解释: 遍历每个子数组,并将其元素按顺序添加到单个列表中。

示例 2

输入: Array [][] = { {'a', 'b', 'c'}, {'d', 'e'}, {'f', 'g', 'h', 'i'} }

输出: [a, b, c, d, e, f, g, h, i]

解释: 遍历每个子数组(字符数组),并将所有字符按顺序添加到列表中,形成一个展平的列表。

示例 3

输入: Array [][] = { {7}, {8, 9, 10}, {11, 12} }

输出 [7, 8, 9, 10, 11, 12]

解释: 单个元素的子数组和多个元素的子数组被合并成一个单一的序列。

示例 4

输入: Array [][] = { {'@', '#', '$'}, {'%', '^'}, {'&', '*', '!', '~'} }

输出 [@, #, $, %, ^, &, *, !, ~]

解释: 从每个子数组中提取特殊字符并存储在输出列表中。

方法 1:使用整数数组

该方法使用 Streams 和 forEach() 来迭代子数组并将每个元素添加到列表中。

步骤 1: 初始化一个空列表来存储展平的元素。

步骤 2: 使用 Arrays.stream() 迭代每个子数组。

步骤 3: 对于每个子数组,使用 for-each 循环迭代其元素,并将它们添加到列表中。

步骤 4: 打印展平的列表作为最终输出。

输出

 
[1, 2, 3, 4, 5, 6, 7, 8, 9]   

时间复杂度: 由于使用 forEach 循环遍历所有元素,因此程序的 O(n) 时间复杂度。

空间复杂度: 由于我们将所有元素存储在列表中,因此程序的 O(n) 空间复杂度。

方法 2:使用字符数组

该方法使用 Streams 和 forEach() 循环将字符数组转换为一个包含所有字符按顺序排列的单层列表。

步骤 1: 初始化一个空列表来存储展平的字符。

步骤 2: 使用 Arrays.stream() 迭代每个子数组(字符数组)。

步骤 3: 对于每个子数组,使用 for-each 循环迭代其元素,并将它们添加到列表中。

步骤 4: 打印展平的列表作为最终输出。

输出

 
[a, b, c, d, e, f, g, h, i]   

时间复杂度: 由于使用 forEach 循环遍历所有元素,因此程序的 O(n) 时间复杂度。

空间复杂度: 由于我们将所有元素存储在列表中,因此程序的 O(n) 空间复杂度。