【Groovy】Array、List、Set、Map简介

news/2025/10/3 10:42:34/文章来源:https://www.cnblogs.com/zhyan8/p/19122993

1 Array

1.1 创建数组

1.1.1 创建一维数组

int[] arr1 = new int[2]
arr1[0] = 1
arr1[1] = 2float[] arr2 = new float[] { 1f, 2f, 3f }
String[] arr3 = ["abc", "xyz"] as String[]

1.1.2 创建二维数组

int[][] arr1 = new int[2][2]
arr1[0][0] = 1
arr1[0][1] = 2
arr1[1][0] = 3
arr1[1][1] = 4float[][] arr2 = new float[][] { [1f, 2f] as float[], [3f, 4f] as float[] }String[] arr3 = [["abc", "efg"], ["rst", "xyz"]] as String[][]

1.2 遍历数组

def items = new String[] { "aa", "bb", "cc" }for (item in items) {println(item) // 打印: aa、bb、cc
}for (int i = 0; i < items.size(); i++) {println("items[$i]=${items[i]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}for (index in items.indices) {println("items[$index]=${items[index]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}items.each {println(it) // 打印: aa、bb、cc
}items.eachWithIndex { item, index ->println("items[$index]=$item") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}

1.3 修改元素顺序

1.3.1 翻转元素

def arr1 = [1, 2, 3, 4, 5] as Integer[]
def arr2 = arr1.reverse() // 翻转Array中元素, 并生成新的Array
def arr3 = arr1.reverse(true) // 在原Array上翻转元素

1.3.2 打乱元素顺序

def arr1 = [1, 2, 3, 4, 5] as Integer[]
def arr2 = arr1.shuffled() // 打乱Array元素顺序, 并生成新的Array
arr1.shuffle() // 打乱Array元素顺序

1.3.3 元素排序

def arr1 = [3, 1, 5, 2, 4] as Integer[]def arr2 = arr1.sort() // 从小到大排序
def arr3 = arr1.sort(false) // 从小到大排序, 并生成新的Array
def arr4 = arr1.toSorted() // 从小到大排序, 并生成新的Arraydef arr5 = arr1.sort {a, b -> b <=> a } // 从大到小排序
def arr6 = arr1.sort(false) { a, b -> b <=> a } // 从大到小排序, 并生成新的Array
def arr7 = arr1.toSorted { a, b -> b <=> a } // 从大到小排序, 并生成新的Array

1.4 切片

def arr1 = ["AA", "BBB", "CC", "DDD", "E"] as String[]
def arr2 = arr1[1..2] // [BBB, CC], 截取1,2元素
def arr3 = arr1.drop(2) // [CC, DDD, E], 丢弃前2个元素
def arr4 = arr1.dropRight(2) // [AA, BBB, CC], 丢弃最后2个元素
def arr5 = arr1.take(2) // [AA, BBB], 截取前2个元素
def arr6 = arr1.takeRight(2) // [DDD, E], 截取最后2个元素

1.5 统计函数

def arr = [1, 2, 3, 4] as Integer[]
arr.sum() // 10
arr.average() // 2.5
arr.max() // 4
arr.min() // 1
arr.count { it > 1 } // 3

1.6 flatten

def arr = [["AA", "BB"], ["CC", "DD"]] as String[][]
String flatten = arr.flatten() // [AA, BB, CC, DD]

2 List

2.1 创建 List

def list1 = [1, 2, 3]
def list2 = List.of(1f, 2f, 3f)
def list3 = new ArrayList<Integer>()
def list4 = new LinkedList<String>()def arr = new String[] { "abc", "xyz" }
def list5 = arr.toList()

2.2 增删改查

2.2.1 增加元素

def list = []
list.add("abc")
list.add("xyz")
list.add(1, "zhang")
list += "san"
list += ["1", "2"]
list += Set.of("3", "4")
println(list) // 打印: [abc, zhang, xyz, san, 1, 2, 4, 3]

2.2.2 删除元素

def list = ["abc", "efg", "xyz", "1", "2", "3"]
list.remove("abc") // [efg, xyz, 1, 2, 3]
list.removeAt(0) // [xyz, 1, 2, 3]
list -= "xyz" // [1, 2, 3]
list -= ["2", "3"] // [1]
list.clear() // []

2.2.3 修改元素

def list = ["abc", "efg", "xyz"]
list[0] = "ABC"

2.2.4 访问元素

1)访问元素

def list = ["zhang", "li", "wang"]
println(list[1]) // 打印: li
list[0] = "chen"
list.first() // chen, 获取首个元素
list.last() // wang, 获取最后一个元素
list.indexOf("wang") // 2, 查找元素对应的索引

2)遍历元素

def items = ["aa", "bb", "cc"]for (item in items) {println(item) // 打印: aa、bb、cc
}for (int i = 0; i < items.size(); i++) {println("items[$i]=${items[i]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}for (index in items.indices) {println("items[$index]=${items[index]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}items.forEach {println(it) // 打印: aa、bb、cc
}items.each {println(it) // 打印: aa、bb、cc
}items.eachWithIndex { item, index ->println("items[$index]=$item") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}

2.3 修改元素顺序

2.3.1 翻转元素

def list1 = [1, 2, 3, 4, 5]
def list2 = list1.reverse() // 翻转List中元素, 并生成新的List
def list3 = list1.reverse(true) // 在原List上翻转元素

2.3.2 打乱元素顺序

def list1 = [1, 2, 3, 4, 5]
def list2 = list1.shuffled() // 打乱List元素顺序, 并生成新的List
list1.shuffle() // 打乱List元素顺序

2.3.3 元素排序

def list1 = [3, 1, 5, 2, 4]def list2 = list1.sort() // 从小到大排序
def list3 = list1.sort(false) // 从小到大排序, 并生成新的List
def list4 = list1.toSorted() // 从小到大排序, 并生成新的Listdef list5 = list1.sort { a, b -> b <=> a } // 从大到小排序
def list6 = list1.sort(false) { a, b -> b <=> a } // 从大到小排序, 并生成新的List
def list7 = list1.toSorted { a, b -> b <=> a } // 从大到小排序, 并生成新的List

2.4 切片

def list1 = ["AA", "BBB", "CC", "DDD", "E"]
def list2 = list1[1..2] // [BBB, CC], 截取1,2元素
def list3 = list1.drop(2) // [CC, DDD, E], 丢弃前2个元素
def list4 = list1.dropRight(2) // [AA, BBB, CC], 丢弃最后2个元素
def list5 = list1.take(2) // [AA, BBB], 截取前2个元素
def list6 = list1.takeRight(2) // [DDD, E], 截取最后2个元素

2.5 统计函数

def list = [1, 2, 3, 4]
list.sum() // 10
list.average() // 2.5
list.max() // 4
list.min() // 1
list.count { it > 1 } // 3

2.6 groupBy

def list = ["AA", "BBB", "CC", "DDD"]
// [2:[AA, CC], 3:[BBB, DDD]]
Map<Integer, List<String>> map = list.groupBy { it.size() }

2.7 flatten

def list = [["AA", "BB"], ["CC", "DD"]]
List<String> flatten = list.flatten() // [AA, BB, CC, DD]

3 Set

3.1 创建 Set

def set1 = [1, 2, 3] as Set
def set2 = Set.of(1f, 2f, 3f)
def set3 = new HashSet<Integer>()
def set4 = new LinkedHashSet<Float>()
def set5 = new TreeSet<String>()

3.2 增删查

3.2.1 增加元素

def set = ["abc", "xyz"] as Set
set.add("1")
set += "2"
set += ["3", "4"]
set += Set.of("5", "6")
println(set) // [abc, xyz, 1, 2, 3, 4, 6, 5]

3.2.2 删除元素

def set = ["abc", "efg", "xyz", "zhang", "san", "li", "si"] as Set
set.remove("abc") // [efg, xyz, zhang, san, li, si]
set -= "xyz" // [efg, zhang, san, li, si]
set -= ["zhang", "san"] // [efg, li, si]
set -= Set.of("li", "si") // [efg]
set.clear() // []

3.2.3 访问元素

1)访问元素

def set = ["zhang", "li", "wang"] as Set
set.any() // true, 判断Set是否为空(容量为0)
set.first() // zhang, 获取首个元素
set.last() // wang, 获取最后一个元素

2)遍历元素

def items = ["aa", "bb", "cc"] as Setfor (item in items) {println(item) // 打印: aa、bb、cc
}for (int i = 0; i < items.size(); i++) {println("items[$i]=${items[i]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}for (index in items.indices) {println("items[$index]=${items[index]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}items.forEach {println(it) // 打印: aa、bb、cc
}items.each {println(it) // 打印: aa、bb、cc
}items.eachWithIndex { item, index ->println("items[$index]=$item") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}

3.3 元素排序

def set = [3, 1, 5, 2, 4] as Setdef list1 = set.sort() // 从小到大排序, 并生成新的List
def list2 = set.sort(false) // 从小到大排序, 并生成新的List
def list3 = set.toSorted() // 从小到大排序, 并生成新的Listdef list4 = set.sort { a, b -> b <=> a } // 从大到小排序, 并生成新的List
def list5 = set.sort(false) { a, b -> b <=> a } // 从大到小排序, 并生成新的List
def list6 = set.toSorted { a, b -> b <=> a } // 从大到小排序, 并生成新的List

3.4 切片

def set = ["AA", "BBB", "CC", "DDD", "E"] as Set
def list1 = set.drop(2) // [CC, DDD, E], 丢弃前2个元素
def list2 = set.dropRight(2) // [AA, BBB, CC], 丢弃最后2个元素
def list3 = set.take(2) // [AA, BBB], 截取前2个元素
def list4 = set.takeRight(2) // [DDD, E], 截取最后2个元素

3.5 统计函数

def set = [1, 2, 3, 4]
set.sum() // 10
set.average() // 2.5
set.max() // 4
set.min() // 1
set.count { it > 1 } // 3

3.6 groupBy

def set = ["AA", "BBB", "CC", "DDD"] as Set
// [2:[AA, CC], 3:[BBB, DDD]]
Map<Integer, List<String>> map = set.groupBy { it.size() }

3.7 flaten

def set = [Set.of("AA", "BB"), Set.of("CC", "DD")] as Set
Set<String> flatten = set.flatten() // [AA, BB, CC, DD]

4 Map

4.1 创建 Map

def map1 = [:]
map1.put("key", 1f)
map1["xyz"] = 2fdef map2 = [1:"a", 2:"b", 3:"c"]def map3 = ["1", "2", "3", "4"].toSpreadMap()
println(map3) // 打印: [1:2, 3:4]def map4 = new HashMap<Integer, String>()
def map5 = new Hashtable<Integer, String>()
def map6 = new LinkedHashMap<Integer, String>()
def map7 = new ConcurrentHashMap<Integer, String>()
def map8 = new TreeMap<Integer, String>()

4.2 增删改查

4.2.1 增加元素

def map = [:]
map.put("key", 1)
map["xyz"] = 2
map += ["abc": 3, "zhang": 4]
println(map) // 打印: [key:1, xyz:2, abc:3, zhang:4]

4.2.2 删除元素

def map = ["key":1, "xyz":2, "abc":3, "zhang":4, "san":5]
map.remove("key") // [xyz:2, abc:3, zhang:4, san:5]
map -= ["xyz": 2, "abc":3] // [zhang:4, san:5]
map.clear() // [:]

4.2.3 修改元素

def map = ["zhang":1, "san":2, "li": 3, "si": 4]
map["zhang"] = 10 // [zhang:10, san:2, li:3, si:4]
map.put("li", 30) // [zhang:10, san:2, li:30, si:4]

4.2.4 访问元素

1)访问元素

def map = ["zhang":1, "san":2, "li": 3, "si": 4]
println map["zhang"] // 1
println map.get("li") // 3

2)遍历元素

def items = ["zhang":1, "san":2]for (item in items) {println("items[${item.key}]=${item.value}") // 打印: items[zhang]=1、items[san]=2
}items.forEach { key, value ->println("items[${key}]=${value}") // 打印: items[zhang]=1、items[san]=2
}items.each {println("items[${it.key}]=${it.value}") // 打印: items[zhang]=1、items[san]=2
}

4.3 keys 和 values

def map = [1001:"Tom", 1002:"Mary"]
println(map.keySet()) // [1001, 1002]
println(map.values()) // [Tom, Mary]
for (entry in map.entrySet()) {println("${entry.key}: ${entry.value}") // [1001, Tom], [1002, Mary]
}
println(map.containsKey(1001)) // true
println(map.containsValue("Tom")) // true

4.4 getOrDefault

def map = [1001:"Tom", 1002:"Mary"]
// 在没有结果时返回给定的默认值
def name = map.getOrDefault(1001, "xxx")

​ 声明:本文转自【Groovy】Array、List、Set、Map简介。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/925789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析:【Python高级语法与正则表达式】

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

成都 广告公司网站建设成都建设路小学网站

系统架构师考试是对计算机从业人员&#xff0c;以考代评的重要考试&#xff0c;近几年一直在参加考试&#xff0c;屡战屡败&#xff0c;后又屡败屡战&#xff0c;记录总结论文相关的知识点&#xff0c;方便考前查看。 一、2010年论文 1&#xff09;论软件的静态演化和动态演化…

详细介绍:PandasAI:ChatBI的极简上手版学习(一)

详细介绍:PandasAI:ChatBI的极简上手版学习(一)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

河南网站设计微信云开发平台

#记录工作 提示&#xff1a;整个过程最好先开启系统代理&#xff0c;也可以用镜像源&#xff0c;确保有官方发布的最新特性和官方库的完整和兼容性支持。 期间下载会特别慢&#xff0c;需要在系统上先开启代理&#xff0c;然后WSL设置里打开网络模式“Mirrored”,以设置WSL自动…

深入解析:数字化工艺设计与仿真:汽车制造业成本节约与效率跃升的转型之路

深入解析:数字化工艺设计与仿真:汽车制造业成本节约与效率跃升的转型之路2025-10-03 10:35 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x:…

20届-测试面经-华为OD - 指南

20届-测试面经-华为OD - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

做司考题的网站dw免费网站模板下载

作者&#xff1a;乔二爷&#xff0c;来自&#xff1a;乔二爷&#xff08;ID&#xff1a;hellozhouq&#xff09;1 前言昨天晚上接到阿里的电面电话&#xff0c;过程中就问到了关于缓存相关的问题。虽然以前接触过&#xff0c;多多少少了解了一些。但是之前自己并没有好好记录这…

【大信息技术】ClickHouse配置详细解读

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

做题记录4

CF577B.Modulo Sum 思路 求是否存在一段非空子序列的和模 \(m\) 的值为 \(0\) ,可以先等价地对每一个数字都模 \(m\) 。对于一个长度为 \(n\) 的序列,显然有 \(n\) 段前缀和,并且前缀和模 \(m\) 的值有 \([0, m)\) …

学习unigui【35】dbgrid字段宽度自适应

学习unigui【35】dbgrid字段宽度自适应UniDBGrid1 -> ClientEvents -> ExtEvents [Ext.data.Store[store] ] add store.load fn:function store.load(sender, records, successful, eOpts) {sender.grid.columnM…

网站建设上传宝贝xamp怎样营销能有效获取客户

要用Go获取短信验证码&#xff0c;通常需要连接到一个短信服务提供商的API&#xff0c;并通过该API发送请求来获取验证码。由于不同的短信服务提供商可能具有不同的API和授权方式&#xff0c;我将以一个简单的示例介绍如何使用Go语言来获取短信验证码。 在这个示例中&#xff0…

lucene 8.7.0 版本中的倒排索引、数字、DocValues三种类型的查询性能对比 - 教程

lucene 8.7.0 版本中的倒排索引、数字、DocValues三种类型的查询性能对比 - 教程2025-10-03 10:24 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overfl…

500亿网站建设wordpress首页模块修改

题目描述 现有两门选修课&#xff0c;每门选修课都有一部分学生选修&#xff0c;每个学生都有选修课的成绩&#xff0c;需要你找出同时选修了两门选修课的学生&#xff0c;先按照班级进行划分&#xff0c;班级编号小的先输出&#xff0c;每个班级按照两门选修课成绩和的降序排序…

数哈多应用授权系统如何为Go语言编程开发者给予知识产权保护?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

数哈多应用授权系统如何为Go语言编程开发者给予知识产权保护?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站开发的公司电话微信h5手机网站

微信公众平台&#xff1a;https://mp.weixin.qq.com/ 第一次需要注册&#xff0c;有账号直接扫扫码登陆即可

2018企业网站优化应该怎么做做外贸主要看什么网站

信号处理函数可以正常返回&#xff0c;也可以调用其他函数返回到程序的主函数中&#xff0c;而不是从处理程序返回。 setjmp/longjmp 使用longjmp可以跳转到setjmp设置的位置 这两个函数原型如下 #include<setjmp.h> int setjmp(jmp_buf env); void longjmp(jmp_buf …

好听的音乐地址

好听的音乐地址https://www.youtube.com/watch?v=6T6Lj4Sdu6o&list=RD6T6Lj4Sdu6o&start_radio=1本博客是博主个人学习时的一些记录,不保证是为原创,个别文章加入了转载的源地址,还有个别文章是汇总网上多…

雁塔区住房和城乡建设局网站中宁网站建设公司

随着家庭娱乐需求日益旺盛&#xff0c;越来越多的家庭消费者和游戏玩家开始追求大屏游戏带来的沉浸感。玩家在玩游戏的时候用大屏能获得更广阔的视野和更出色的视觉包围感&#xff0c;因此用大屏玩游戏已经成为了一种潮流。用酷开系统玩大屏游戏&#xff0c;过瘾又刺激&#xf…

服务器和网站维护太原注册公司网站

目录 一、安装XPath 二、XPath的基础语法 1.选取节点 三、使用XPath匹配数据 1.浏览器审查元素 2.具体实例 四、总结 一、安装XPath 控制台输入指令&#xff1a;pip install lxml 二、XPath的基础语法 XPath是一种在XML文档中查找信息的语言&#xff0c;可以使用它在HTM…