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

2023-03-30 10:11:14 浏览数 (2)

文章目录

  • 一、集合中的 " " 操作符重载
  • 二、集合中的 " - " 操作符重载
  • 三、完整代码示例

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


对集合使用 " " 运算符 , 其作用相当于 调用 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]

0 人点赞