热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

文章目录一、集合中的操作符重载二、集合中的-操作符重载三、完整代码示例一、集合中的操作符重载对集合使用运算符,其作用相当于调用plus方法,符号两侧的值就是pl


文章目录

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










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





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


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

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



集合的 plus 函数原型 :

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

assert [1,2,3] == [1,2] + 3
** &#64;param left 集合* &#64;param right 要添加的元素对象* &#64;return 新的集合 , 该集合中有新的的添加元素* &#64;since 1.5.0*/public static <T> Collection<T> plus(Collection<T> left, T right) {// 创建新集合 , 大小是 原集合大小 &#43; 1final Collection<T> answer &#61; cloneSimilarCollection(left, left.size() &#43; 1);answer.add(right);return answer;}


代码示例 :

// I. 集合的 " &#43; " 操作符重载// 操作符重载 " &#43; " 操作符相当于调用 plus 方法def list2 &#61; list &#43; "4"// 打印 [1, 2, 3]println list// 打印 [1, 2, 3, 4]println list2

执行结果 :

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









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





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


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

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



集合的 minus 方法原型 :

/*** 创建一个新列表&#xff0c;该列表由第一个列表中的元素减去要删除的给定元素的每个匹配项组成。*

assert ["a", 5, 5, true] - 5 &#61;&#61; ["a", true]
** &#64;param self List 集合对象* &#64;param removeMe 从集合中要删除的元素* &#64;return 返回一个新集合 , 该集合中的指定元素已经被删除了* &#64;since 1.0*/public static <T> List<T> minus(List<T> self, Object removeMe) {List<T> ansList &#61; new ArrayList<T>();for (T t : self) {if (!coercedEquals(t, removeMe)) ansList.add(t);}return ansList;}


代码示例 :

// II. 集合的 " - " 操作符重载// 操作符重载 " - " 操作符相当于调用 minus 方法list2 &#61; 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 &#61; ["1", "2", "3"]// I. 集合的 " &#43; " 操作符重载// 操作符重载 " &#43; " 操作符相当于调用 plus 方法def list2 &#61; list &#43; "4"// 打印 [1, 2, 3]println list// 打印 [1, 2, 3, 4]println list2// II. 集合的 " - " 操作符重载// 操作符重载 " - " 操作符相当于调用 minus 方法list2 &#61; list - "2"// 打印 [1, 2, 3]println list// 打印 [1, 3]println list2}
}


执行结果 :

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

在这里插入图片描述


推荐阅读
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
author-avatar
手机用户新常态
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有