美文网首页
Groovy 列表、映射和范围 与方法

Groovy 列表、映射和范围 与方法

作者: zhaoyubetter | 来源:发表于2017-10-14 21:01 被阅读49次

参考:Groovy入门经典书籍

列表(list)映射(map)范围(range)为引用其他对象的集合;

列表

例子 说明
[1,2,3,4] 整形列表
['better','Joy',124] 不同类型的列表
['better','Joy',[124,11,33]] 不同类型的列表

用来存储数据项的有序集合,并且集合可以嵌套,而且可以包含不同类型的数据项;

例子 说明
[1,2,3,4] 整形列表
['better','Joy',124] 不同类型的列表
['better','Joy',[124,11,33]] 不同类型的列表

列表操作相关方法

// 取值操作
def numbers = [1,2,3,4,5,6]
println(numbers[0])     // 1
println(numbers[-1])    // 6
println(numbers[1..4])   // 返回列表[2,3,4,5]
println(numbers[1,4])   // 返回列表[2,5]

// 赋值操作
numbers[0] = ["better", "a"]
println(numbers)        // [[better, a], 2, 3, 4, 5, 6]
numbers << 8            // leftShift运算符
println(numbers)        // [[better, a], 2, 3, 4, 5, 6, 8]

// 其他操作
println(numbers.getClass().getName())    // 默认ArrayList实例
// as 强制使用LinkedList
println(([11,22,33] as LinkedList).getClass().getName())

映射

例子 说明
['better':'zhao', 'joy':'chen'] 名姓集合
['odd':[2,4,6,8], 'even':[1,3,5,7] 字符串型关键字与列表
[:] 空映射

类似于Map。

例子 说明
['better':'zhao', 'joy':'chen'] 名姓集合
['odd':[2,4,6,8], 'even':[1,3,5,7] 字符串型关键字与列表
[:] 空映射

映射操作相关方法

def names = ['better':'zhao', 'joy':'chen']
// 取值
println(names['better'])        // zhao
println(names.get('better'))    // zhao

// 赋值
names['better'] = [1,2,3,4]
println(names)              // [better:[1, 2, 3, 4], joy:chen]
println(names.keySet())     // [better, joy]
println(names.values())     // [[1, 2, 3, 4], chen]

范围

表示序列值得一种简单方法,通过 start end 来确定边界;

 println(1..5)      // [1,2,3,4,5]
 println(1..<5)     // [1, 2, 3, 4]
 println(5..1)      // [5,4,3,2,1]
 println('A'..'D')   // [A,B,C,D]
 println((1..5).getTo()) //5
 println((1..5).getFrom()) //5

println((1..5).getClass().getName())  // groovy.lang.IntRange

方法

方法用 def 来定义

def methodName(param1,param2,param3) {
}

默认参数

可使用默认参数,来解决重载方法过多问题,如:

   @Test
    void test9() {
        println(chengfang(4))
    }

    private def chengfang(value, time = 2) {
        def result = value
        for (i in 1..<time) {
            result *= result
        }
        return result   // 返回值, true 可省略,最后一行表示返回
    }

动态类型与静态类型方法

方法的定义中,使用动态的返回类型,与动态的参数,如下:

 // 动态类型方法,返回值,参数都是动态指定的
  def times(x, y) {
        return x * y
    }

    @org.junit.Test
    void test1() {
        println("3 * 4 = ${times(3, 4)}")
        println("better * 4 = ${times('better', 4)}")  // 连续4个better
    }

// 静态类型方法(指定了方法的返回类型 int ,参数的类型)
// 上面test1方法中第二条语句,运行会产生异常
int times2(int x, int y) {
        return x * y
    }

相关文章

  • Groovy 列表、映射和范围 与方法

    参考:Groovy入门经典书籍 列表(list)映射(map)范围(range)为引用其他对象的集合; 列表 用来...

  • Gradle开发-Groovy集合&数组

    #Groovy 集合 列表集合的定义和元素的操作; 数组的定义和元素的操作; 键值对集合的定义和元素的操作; 范围...

  • Nextflow系列之三-备份

    Nextflow的脚本语言是Groovy的拓展。 语言基础 变量 列表 映射 获取 增加或修改 一次声明多个变量 ...

  • 3、列表List、映射Map、范围Range

    列表List 常用方法: 映射Map Range

  • groovy-运算符

    Groovy操作符 Groovy支持运算符重载,各种运算符被映射到普通的java对象的方法调用,这就使得开发者可以...

  • 范围和映射(五)

    一、范围(Range) 作用:遍历数组、切片、映射,类似于for-each 使用方法: 注意事项:range会返回...

  • Groovy相关概念性东西

    参考文章:Groovy学习 1、Groovy的变量和方法声明 :   在Groovy中, 通过def关键字来声明变...

  • Gradle | 集成groovy原理

    groovy-lang 详细介绍,本文包含原理和测试两部分。 原理 groovy 与java 1、groovy 与...

  • 字典

    字典 字典 是用于将任意键映射到值的数据结构。 列表可以被认为是在一定范围内具有整数键的字典。 字典可以用与列表相...

  • 08 | 映射

    映射是无序集合,无序的原因是映射的实现使用来散列表 声明 空映射与nil映射 映射是引用类型在函数间传递映射并不会...

网友评论

      本文标题:Groovy 列表、映射和范围 与方法

      本文链接:https://www.haomeiwen.com/subject/qbetuxtx.html