【Groovy】集合遍历 ( 集合中有集合元素时调用 flatten 函数拉平集合元素 | 代码示例 )

举报
韩曙亮 发表于 2022/01/11 22:49:54 2022/01/11
【摘要】 文章目录 一、集合中有集合元素时调用 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。