前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Groovy】集合遍历 ( 操作符重载 | 集合中的 “ + “ 操作符重载 | 集合中的 “ - “ 操作符重载 | 代码示例 )

【Groovy】集合遍历 ( 操作符重载 | 集合中的 “ + “ 操作符重载 | 集合中的 “ - “ 操作符重载 | 代码示例 )

作者头像
韩曙亮
发布2023-03-30 10:11:14
1.1K0
发布2023-03-30 10:11:14
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、集合中的 " + " 操作符重载


对集合使用 " + " 运算符 , 其作用相当于 调用 plus 方法 , " + " 符号两侧的值就是 plus 方法的

2

个参数值 ; 这两个参数 ,

  • 第一个参数是 Collection<T> left , 这是 原集合 , " + " 运算符左侧的元素 ;
  • 第二个参数是 T right , 这是集合中 要添加的元素 , " + " 运算符右侧的元素 ;

plus 方法的 返回值是一个新的集合 , 原集合不发生改变 , 新集合中 , 会在原集合的基础上 , 增加了 " + " 操作符后面的元素 ;

集合的 plus 函数原型 :

代码语言:javascript
复制
    /**
     * 将集合创建为集合和对象的并集。
     * 如果集合是集合,则返回的集合将是集合,否则将是列表。
     * 此操作将始终为结果创建新对象,而操作数保持不变。
     * <pre class="groovyTestCase">assert [1,2,3] == [1,2] + 3</pre>
     *
     * @param left  集合
     * @param right 要添加的元素对象
     * @return 新的集合 , 该集合中有新的的添加元素
     * @since 1.5.0
     */
    public static <T> Collection<T> plus(Collection<T> left, T right) {
    	// 创建新集合 , 大小是 原集合大小 + 1
        final Collection<T> answer = cloneSimilarCollection(left, left.size() + 1);
        answer.add(right);
        return answer;
    }

代码示例 :

代码语言:javascript
复制
        // I. 集合的 " + " 操作符重载


        // 操作符重载 " + " 操作符相当于调用 plus 方法
        def list2 = list + "4"

        // 打印 [1, 2, 3]
        println list
        // 打印 [1, 2, 3, 4]
        println list2

执行结果 :

代码语言:javascript
复制
[1, 2, 3]
[1, 2, 3, 4]

二、集合中的 " - " 操作符重载


对集合使用 " - " 运算符 , 其作用相当于 调用 minus 方法 , " - " 符号两侧的值就是 minus 方法的

2

个参数值 ; 这两个参数 ,

  • 第一个参数是 List<T> self , 这是 原集合 , " - " 运算符左侧的元素 ;
  • 第二个参数是 Object removeMe , 这是集合中 要删除的元素 , " - " 运算符右侧的元素 ;

minus 方法的 返回值是一个新的集合 , 原集合不发生改变 , 新集合中 , 会在原集合的基础上 , 删除了 " - " 操作符后面的元素 ;

集合的 minus 方法原型 :

代码语言:javascript
复制
    /**
     * 创建一个新列表,该列表由第一个列表中的元素减去要删除的给定元素的每个匹配项组成。
     * <pre class="groovyTestCase">assert ["a", 5, 5, true] - 5 == ["a", true]</pre>
     *
     * @param self     List 集合对象
     * @param removeMe 从集合中要删除的元素
     * @return 返回一个新集合 , 该集合中的指定元素已经被删除了
     * @since 1.0
     */
    public static <T> List<T> minus(List<T> self, Object removeMe) {
        List<T> ansList = new ArrayList<T>();
        for (T t : self) {
            if (!coercedEquals(t, removeMe)) ansList.add(t);
        }
        return ansList;
    }

代码示例 :

代码语言:javascript
复制
        // II. 集合的 " - " 操作符重载


        // 操作符重载 " - " 操作符相当于调用 minus 方法
        list2 = list - "2"

        // 打印 [1, 2, 3]
        println list
        // 打印 [1, 3]
        println list2

执行结果 :

代码语言:javascript
复制
[1, 2, 3]
[1, 3]

三、完整代码示例


完整代码示例 :

代码语言:javascript
复制
class Test {
    static void main(args) {

        // 为 ArrayList 设置初始值
        def list = ["1", "2", "3"]


        // I. 集合的 " + " 操作符重载


        // 操作符重载 " + " 操作符相当于调用 plus 方法
        def list2 = list + "4"

        // 打印 [1, 2, 3]
        println list
        // 打印 [1, 2, 3, 4]
        println list2


        // II. 集合的 " - " 操作符重载


        // 操作符重载 " - " 操作符相当于调用 minus 方法
        list2 = list - "2"

        // 打印 [1, 2, 3]
        println list
        // 打印 [1, 3]
        println list2
    }
}

执行结果 :

代码语言:javascript
复制
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3]
[1, 3]
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、集合中的 " + " 操作符重载
  • 二、集合中的 " - " 操作符重载
  • 三、完整代码示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档