【Groovy】集合遍历 ( 集合中有集合元素时调用 flatten 函数拉平集合元素 | 代码示例 )
【摘要】
文章目录
一、集合中有集合元素时调用 flatten 函数拉平集合元素二、完整代码示例
一、集合中有集合元素时调用 flatten 函数拉平集合元素
在上一篇博客 ...
一、集合中有集合元素时调用 flatten 函数拉平集合元素
在上一篇博客 【Groovy】集合遍历 ( 操作符重载 | 集合中的 “ << “ 操作符重载 | 使用集合中的 “ << “ 操作符添加一个元素 | 使用集合中的 “ << “ 操作符添加一个集合 ) 中 , 使用集合中的 “ << “ 操作符添加一个集合 , 得到的结果是 [“1”, “2”, “3”, “4”, [“5”, “6”]] ;
如果想要得到 [“1”, “2”, “3”, “4”, “5”, “6”] 结果 , 可以调用 集合的 flatten 方法 , 拉平该集合 , 就会自动将 集合中的 集合元素 拆分成单个元素 , 最终可以得到一个全部都是 String 对象的集合 ;
拉平集合 时 , 如果集合中存在 数组 或 集合 , 会创建一个新集合 , 将 集合中的 数组 或 集合元素 , 添加到新集合中 , 原集合保持不变 ;
拉平集合 是一个有风险的操作 , 会改变集合的原始值 , 因此这里创建一个新集合存放拉平后的集合 , 不在原集合的基础上进行修改 ;
Collection 的 flatten 函数原型 :
/**
* 拉平集合。此集合和任何嵌套数组或集合的内容(递归地)添加到新集合中。
* <pre class="groovyTestCase">assert [1,2,3,4,5] == [1,[2,3],[[4]],[],5].flatten()</pre>
*
* @param self 要拉平的集合
* @return 返回一个新集合 , 该集合中的元素都被拉平了
* @since 1.6.0
*/
public static Collection<?> flatten(Collection<?> self) {
return flatten(self, createSimilarCollection(self));
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
二、完整代码示例
完整代码示例 :
class Test {
static void main(args) {
// 为 ArrayList 设置初始值
def list = ["1", "2", "3"]
// I. 集合的 " << " 操作符重载 , 添加元素
// 操作符重载 " << " 操作符相当于调用 leftShift 方法
def list2 = list << "4"
// 打印 [1, 2, 3, 4]
println list
// 打印 [1, 2, 3, 4]
println list2
// II. 集合的 " << " 操作符重载 , 添加集合
// 操作符重载 " << " 操作符相当于调用 leftShift 方法
list2 = list << ["5", "6"]
// 打印 [1, 2, 3, 4, [5, 6]]
println list
// 打印 [1, 2, 3, 4, [5, 6]]
println list2
// III. 调用集合的 flatten 方法拉平集合
// 拉平集合
list2 = list.flatten();
// 打印 [1, 2, 3, 4, [5, 6]]
println list
// 打印 [1, 2, 3, 4, 5, 6]
println list2
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
执行结果 :
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4, [5, 6]]
[1, 2, 3, 4, [5, 6]]
[1, 2, 3, 4, [5, 6]]
flatten : [1, 2, 3, 4, 5, 6]
- 1
- 2
- 3
- 4
- 5
- 6
文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。
原文链接:hanshuliang.blog.csdn.net/article/details/122165036
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)