Groovy集合声明与访问 ( 使用 [] 创建 ArrayList 和 LinkedList 集合 | 集合赋初值 | 使用下标访问集合 | 使用 IntRange 作为下标访问集合 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Groovy集合声明与访问 ( 使用 [] 创建 ArrayList 和 LinkedList 集合 | 集合赋初值 | 使用下标访问集合 | 使用 IntRange 作为下标访问集合 )相关的知识,希望对你有一定的参考价值。





一、使用 [] 创建集合




1、使用 [] 创建 ArrayList 集合


[] 赋值给变量 , 默认就是创建 ArrayList 集合 ; 在下面的代码中 , 打印 [] 变量类型 ;

其结果是 class java.util.ArrayList ;

        // 使用 [] 为变量赋值
        // 该变量默认为 ArrayList 类型
        def list = []

        // 打印 [] 变量类型
        println list.class

2、使用 [] 创建 LinkedList 集合


如果要创建 LinkedList 集合 , 可以在变量的赋值后面添加 as LinkedList , 就可以将该变量声明为 LinkedList 集合 ;

其执行结果为 class java.util.LinkedList ;

        // 创建 LinkedList
        def list1 = [] as LinkedList

        // 打印 list1 变量类型
        println list1.class




二、访问集合中的元素




1、集合赋初值


[] 中 , 可以设置多个相同类型的元素 , 各个元素之间使用逗号隔开 ;

下面的代码相当于创建了 ArrayList<String> 集合 , 并为该集合赋值 3 3 3 个元素 , 分别是 “1”, “2”, “3” ;

def list2 = ["1", "2", "3"]

2、使用下标访问集合元素



( 1 ) 正常下标


使用 [0] , [1] 合法的正常下标 , 可以访问集合中的元素 , 该用法与 Kotlin 类似 ;

        def list2 = ["1", "2", "3"]

        // 通过下标访问集合元素
        print list2[0] + " "
        print list2[1] + " "
        print list2[2] + " "

打印结果为

1 2 3 

( 2 ) 负数下标


如果 下标为负数 , 如 -1 , 则相当于访问倒数第一个取值 , 即访问 list.size() - 1 下标取值 , 下面的两种用法是等效的 ;

        // 为 ArrayList 设置初始值
        def list2 = ["1", "2", "3"]

        // 访问集合的 -1 元素下标
        // 相当于倒过来取值 , 倒数第一个取值
        println list2[-1] + " "
        // 该用法等价于 -1 下标取值
        println list2[list2.size() - 1] + " "

打印结果为 :

3
3

( 3 ) 正数下标但超出范围


如果 ArrayList 取值的下标是正数 , 但是超过了范围 , 则获取的值为 null ;

        // 为 ArrayList 设置初始值
        def list2 = ["1", "2", "3"]

        // 如果下标超出了 , 获取的值为 null
        println list2[4] + " "

3、使用 IntRange 作为下标访问集合


IntRange 实例对象 也可以作为 集合的访问下标 , 获取的是一个 新的子集合 ;

        // 为 ArrayList 设置初始值
        def list2 = ["1", "2", "3"]

        // 取其中的某个范围的值
        println list2[0..1] + ""
        println list2[1..2] + ""

打印结果 :

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

4、修改使用 IntRange 作为下标访问集合不影响原集合的元素值


修改使用 IntRange 作为下标访问集合 不影响原集合的元素值 , 原来集合中的元素的值不变 , 这说明获取的集合是 新创建的一个集合 ;

        // 为 ArrayList 设置初始值
        def list2 = ["1", "2", "3"]

        // 取出的值组成的是一个新的集合
        // 修改新集合中的数据 , 不会对老集合产生影响
        def list3 = list2[0..2]
        list3[0] = "8"
        println list2
        println list3

执行结果 :

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




三、完整代码示例



完整代码示例 :

class Test 
    static void main(args) 


        // I . 创建 ArrayList 集合


        // 使用 [] 为变量赋值
        // 该变量默认为 ArrayList 类型
        def list = []

        // 打印 [] 变量类型
        println list.class


        // II . 创建 LinkedList 集合


        // 创建 LinkedList
        def list1 = [] as LinkedList

        // 打印 list1 变量类型
        println list1.class


        // III . 创建 ArrayList 为集合元素赋值 , 使用下标访问集合元素


        // 为 ArrayList 设置初始值
        def list2 = ["1", "2", "3"]

        // 通过下标访问集合元素
        print list2[0] + " "
        print list2[1] + " "
        print list2[2] + " "
        println ""

        // 访问集合的 -1 元素下标
        // 相当于倒过来取值 , 倒数第一个取值
        println list2[-1] + " "
        // 该用法等价于 -1 下标取值
        println list2[list2.size() - 1] + " "

        // 如果下标超出了 , 获取的值为 null
        println list2[4] + " "

        // 取其中的某个范围的值
        println list2[0..1] + ""
        println list2[1..2] + ""

        // 取出的值组成的是一个新的集合
        // 修改新集合中的数据 , 不会对老集合产生影响
        def list3 = list2[0..2]
        list3[0] = "8"
        println list2
        println list3

    

执行结果 :

class java.util.ArrayList
class java.util.LinkedList
1 2 3 
3 
3 
null 
[1, 2, ]
[2, 3, ]
[1, 2, 3]
[8, 2, 3]

以上是关于Groovy集合声明与访问 ( 使用 [] 创建 ArrayList 和 LinkedList 集合 | 集合赋初值 | 使用下标访问集合 | 使用 IntRange 作为下标访问集合 )的主要内容,如果未能解决你的问题,请参考以下文章

Groovy03_集合

关于空间/时间的 Groovy 集合性能注意事项

GroovyGroovy 方法调用 ( 使用 对象名.@成员名 访问 Groovy 对象成员 )

Groovy编译时元编程 ( 编译时元编程引入 | 声明需要编译时处理的类 | 分析 Groovy 类的 AST 语法树 )

Groovy与Gradle在Android中的应用

GroovyGroovy 方法调用 ( 使用 对象名.成员名 访问 Groovy 类的成员 | 使用 对象名.‘成员名‘ 访问类的成员 | 使用 对象名[‘成员名‘] 访问类成员 )