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

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Groovy集合遍历 ( 操作符重载 | 集合中的 “ + “ 操作符重载 | 集合中的 “ - “ 操作符重载 | 代码示例 )相关的知识,希望对你有一定的参考价值。





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



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

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

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


集合的 plus 函数原型 :

    /**
     * 将集合创建为集合和对象的并集。
     * 如果集合是集合,则返回的集合将是集合,否则将是列表。
     * 此操作将始终为结果创建新对象,而操作数保持不变。
     * <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;
    

代码示例 :

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


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

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

执行结果 :

[1, 2, 3]
[1, 2, 3, 4]




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



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

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

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


集合的 minus 方法原型 :

    /**
     * 创建一个新列表,该列表由第一个列表中的元素减去要删除的给定元素的每个匹配项组成。
     * <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;
    

代码示例 :

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


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

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

执行结果 :

[1, 2, 3]
[1, 3]




三、完整代码示例



完整代码示例 :

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
    


执行结果 :

[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3]
[1, 3]

以上是关于Groovy集合遍历 ( 操作符重载 | 集合中的 “ + “ 操作符重载 | 集合中的 “ - “ 操作符重载 | 代码示例 )的主要内容,如果未能解决你的问题,请参考以下文章

Groovy集合遍历 ( 操作符重载 | 集合中的 “ << “ 操作符重载 | 使用集合中的 “ << “ 操作符添加一个元素 | 使用集合中的 “ << “ 操作符添加一个集合 )

Groovy集合遍历 ( 操作符重载 | 集合中的 “ << “ 操作符重载 | 使用集合中的 “ << “ 操作符添加一个元素 | 使用集合中的 “ << “ 操作符添加一个集合 )

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

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

Groovy集合遍历 ( “ *. “ 展开操作符 | 代码示例 )

Groovy集合遍历 ( “ *. “ 展开操作符 | 代码示例 )