• Groovy之列表操作


    1、列表的定义方式

    Groovy中定义列表的方式有两种,一是使用Java中的方法来创建列表二是使用Groovy语言中的方法来创建列表

    1. def list = new ArrayList() // java中的定义方式
    2. // Groovy中定义列表的方式
    3. def list = [1, 2, 3, 2, 4, 2, 4] // ArrayList

     

    2、数组的定义方式

    Groovy中数组的定义方式也有两种,一是使用Java中的方法来创建数组二是使用Groovy语言中的方法来创建数组,使用as关键字

    1. // 定义数组使用as关键字
    2. def array = [1, 2, 1, 34] as int[]
    3. int[] array1 = [1, 2, 3, 4] // 使用强类型定义数组

     

    3、列表的增删改查找

    注:因为Groovy中数组的操作方法与列表的操作方法相同,所以我只介绍列表的操作方式

    3.1、List的添加操作

    3.1.1、add方法

    1. def testList = [1]
    2. testList.add(6)

    3.1.2、leftShift方法

    1. def testList = [1]
    2. testList.leftShift(7)

    3.1.3、使用 <<运算符添加元素

    1. def testList = [1]
    2. testList << 8

    3.1.4、使用 + 运算符添加元素

    注:这种方式产生的是一个新的列表

    1. def testList = [1]
    2. def PutList = testList + 9

    3.2、List的删除操作

    3.2.1、remove,根据索引删除指定元素

    1. def LIST = [6, -3, 9, 2, -7, 1, 5,5]
    2. LIST.remove(7)

    3.2.2、remove((Object) object),根据传入对象删除列表中指定的元素

    LIST.remove((Object) 6)

    3.2.3、removeAt,根据传入的索引删除集合中的元素 与remove方法类似

    LIST.removeAt(1)

    3.2.4、removeElement,根据传入对象删除列表中指定的元素与方法二类似

    LIST.removeElement(6)

    3.2.5、removeAll,借助闭包移除符合条件的元素

    LIST.removeAll{return it % 2 == 0}

    3.3、列表的排序操作 

    3.3.1借助Collections类中的sort排序方法

    1. def sortList = [5, 67, -1, 46, 4, -33]
    2. Collections.sort(sortList)
    3. println sortList

    此sort方法还有一个重载方法,可以按照我们自定义的规则进行排序

    1. Comparator mc = { a, b -> a == b ? 0 : Math.abs(a) < Math.abs(b) ? -1 : 1 } // 使用闭包进行判断条件的封装
    2. Collections.sort(sortList, mc)
    3. println sortList

    3.3.2、Groovy中的sort方法

    Groovy 中为我们提供的sort方法,直接就可以进行排序

    1. sortList.sort()
    2. println sortList

    Groovy中的sort方法还可以搭配闭包进行使用

    1. sortList.sort { a, b -> a == b ? 0 : Math.abs(a) > Math.abs(b) ? -1 : 1 }
    2. println sortList

    字符串的排序,根据字符串的长度进行排序,不指定排序规则,就按照首字母的ASCLL码进行排序

    1. def sortStringList = ["abc", "zfj", "z", "Lucy"]
    2. sortStringList.sort { it -> return it.length() }
    3. println sortStringList

    3.4、列表的查找

    3.4.1、find

    find方法找出的是第一个符合条件的元素

    1. def findList = [-3, 9, 6, 2, -7, 5]
    2. int result = findList.find{return it % 2 == 0}

    3.4.2、findAll

    findAll方法找出所有符合条件的元素,并把它封装为java.util.ArrayList进行返回

    ArrayList result = findList.findAll{return it % 2 == 0}

    3.4.3、any

    any方法搭配闭包使用,在列表中查找条件的元素,只要找到一个符合条件的元素就返回true,反之则返回false

    def result = findList.any { return it % 2 == 0 } // result的值为布尔类型

    3.4.4、every

    此方法与any相反,必须列表中的元素满足闭包中的条件才返回true,反之则返回false

    def result = findList.every { return it % 2 == 0 }

    这里只是介绍Groovy中的用法,还可以使用java中的indexof等方法,进行列表查找,这里就不介绍了

    3.4.5、查找列表中的最小值与最大值

    min方法查找最小值,max方法查找最大值

    1. def min= findList.min()
    2. def max= findList.max()

    这里的两个方法,也可以搭配闭包进行自定义大小比较

    def result = findList.min{return Math.abs(it)}
    

    3.4.6、统计查询,统计符合条件的元素个数(搭配闭包使用)

    def result = findList.count { return it % 2 == 0 }

  • 相关阅读:
    leetcode解题思路分析(一百二十六)1038 - 1044 题
    论文阅读【Oscar: Object-Semantics Aligned Pre-training for Vision-Language Tasks】
    【SG滤波】三阶滤波、五阶滤波、七阶滤波(Matlab代码实现)
    Spring Cloud Circuit Breaker 使用示例
    第2-3-8章 分片上传和分片合并的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss
    前端:css特殊样式(2D变换,3D变换,过渡,动画,渐变)
    【无标题】
    Python字符串操作总结
    MFC界面库BCGControlBar v33.2 - Calendar、Planner控件升级
    基于模糊PID控制器的水温控制系统仿真
  • 原文地址:https://blog.csdn.net/weixin_52851967/article/details/125398400