文章目录

  • 一、使用 [] 创建集合
    • 1、使用 [] 创建 ArrayList 集合
    • 2、使用 [] 创建 LinkedList 集合
  • 二、访问集合中的元素
    • 1、集合赋初值
    • 2、使用下标访问集合元素
      • ( 1 ) 正常下标
      • ( 2 ) 负数下标
      • ( 3 ) 正数下标但超出范围
    • 3、使用 IntRange 作为下标访问集合
    • 4、修改使用 IntRange 作为下标访问集合不影响原集合的元素值
  • 三、完整代码示例

一、使用 [] 创建集合


1、使用 [] 创建 ArrayList 集合

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

其结果是 class java.util.ArrayList ;

        // 使用 [] 为变量赋值// 该变量默认为 ArrayList 类型def list = []// 打印 [] 变量类型println list.class

2、使用 [] 创建 LinkedList 集合

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

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

        // 创建 LinkedListdef list1 = [] as LinkedList// 打印 list1 变量类型println list1.class

二、访问集合中的元素


1、集合赋初值

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

下面的代码相当于创建了 ArrayList<String> 集合 , 并为该集合赋值 333 个元素 , 分别是 “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"]// 如果下标超出了 , 获取的值为 nullprintln 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 list2println list3

执行结果 :

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

三、完整代码示例


完整代码示例 :

class Test {static void main(args) {// I . 创建 ArrayList 集合// 使用 [] 为变量赋值// 该变量默认为 ArrayList 类型def list = []// 打印 [] 变量类型println list.class// II . 创建 LinkedList 集合// 创建 LinkedListdef 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] + " "// 如果下标超出了 , 获取的值为 nullprintln list2[4] + " "// 取其中的某个范围的值println list2[0..1] + ""println list2[1..2] + ""// 取出的值组成的是一个新的集合// 修改新集合中的数据 , 不会对老集合产生影响def list3 = list2[0..2]list3[0] = "8"println list2println 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 作为下标访问集合 )相关推荐

  1. Java集合系列---List源码解析(ArrayList和LinkedList的区别)

    List源码主要讲ArrayList,LinkedList,Vector三个类 1 ArrayList ArrayList是一个底层基于数组的集合, 首先来看一下它的继承关系, public clas ...

  2. #Java教程:集合 #Collection、List、Set #ArrayList、LinkedList、Vector、HashSet、TreeSet #一个斗地主小游戏@FDDLC

    一.概述 Java单列集合中最顶层的是Collection接口,Collection下又分List和Set两大类: 学习Java集合的时候,建议自顶向下学:先学Collection,再学List和Se ...

  3. ArrayList与LinkedList的性能分析

    作者:小码哥Damon 链接:https://juejin.cn/post/6968633784874827784 来源:掘金 1. 前言 经常在面试时,被问到集合的概念,集合 List.Map.Se ...

  4. Java集合框架源码解析之ArrayList

    ArrayList 可能是很多人使用得最为频繁的容器类了,ArrayList 实现了 List 接口,是一个有序容器,即存放元素的顺序与添加顺序相同,允许添加相同元素,包括 null ,底层通过数组来 ...

  5. 1.3 List集合:ArrayList和LinkedList类的用法及区别

    List集合: List 是一个有序.可重复的集合,集合中每个元素都有其对应的顺序索引. List 集合允许使用重复元素,可以通过索引来访问指定位置的集合元素. List 集合默认按元素的添加顺序设置 ...

  6. Java 集合系列(2): ArrayList源码深入解析和使用示例

    戳上面的蓝字关注我们哦! 精彩内容 精选java等全套视频教程 精选java电子图书 大数据视频教程精选 java项目练习精选 概要 上一章,我们学习了Collection的架构.这一章开始,我们对C ...

  7. JAVA day18,19 单列集合Collection:List(ArrayList,LinkedList,Vector)、Queue(Deque)、Set(HashSet,TreeSet),比较器

    Collection单列集合 所有超级接口: Iterable<E> 所有已知子接口: BeanContext, BeanContextServices, BlockingDeque< ...

  8. 集合框架及ArrayList、LinkedList源码的个人理解

    目录 一.框架 二.集合 三.Collection集合 四.List集合 4.1 List子接口 4.2 数组与链表 4.3 ArrayList[重点] 4.4 LinkedList 4.5 Vect ...

  9. 14.1 常见数据结构、List集合(ArrayList、LinkedList)、Set集合(HashSet、LinkedHashSet)、可变参数方法

    目录 常见的数据结构 栈 队列 数组 链表 红黑树 二叉树binary tree List集合 List接口中常用方法 列:List接口常用方法练习 ArrayList集合 LinkedList集合 ...

最新文章

  1. Flink-on-yarn
  2. GCC安装UBUNTU
  3. 【收藏】ArcGIS 10.8 for Desktop 完整安装教程(含win7/8/10 32/64位+下载地址+亲测可用+汉化)
  4. 还不知道这 11 个超酷的编程新工具你就 out 了!
  5. java-Comparable和Comparator的用法
  6. 2013年成都现场赛赛后总结
  7. ios中怎么样调节占位文字与字体大小在同一高度
  8. 对比Python,看看Excel如何3步给证件照换底色!
  9. kubernetes 学习记录-two
  10. React router v6写法总结
  11. HDU P4699 Editor
  12. c语言计算乘方不使用乘法,C语言乘方运算之矩阵乘方题解
  13. SSL 3.0曝出Poodle漏洞的解决方案
  14. [E::hts_idx_push] NO_COOR reads not in a single block at the end 10 -1
  15. html表格左右布局,css table布局大法,解决你大部分居中、多列等高、左右布局的问题...
  16. 华夫饼为什么不松软_华夫饼0添加太难了,在家才能做到,松软有营养,好吃又减肥...
  17. libuv 原理_进程 | libuv中文教程
  18. 搭建K8S集群之node节点部署
  19. 游戏3D建模师职业生涯规划,年薪百万学习路线
  20. JavaScript說分明

热门文章

  1. 距离QCon纽约还有3个礼拜:新的演讲、播客节目和研讨会
  2. 心得体悟帖---13、编程和学习同时进行
  3. c#对oracle操作时候 出现的乱码问题。
  4. 查找文本字母并且统计个数
  5. AngularJS学习篇(十)
  6. 在进入新版本 的时候,进行推送引导
  7. Java多态-如何理解父类引用指向子类对象
  8. UIPageControl
  9. Eclipse+Tomcat7.0+MySQL 连接池设置
  10. Python中纠结处之其一—— 静态方法、类方法