找回密码
 立即注册
首页 业界区 安全 【Groovy】Array、List、Set、Map简介

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

梁丘眉 2025-10-3 09:58:27
1 Array

1.1 创建数组

1.1.1 创建一维数组
  1. int[] arr1 = new int[2]
  2. arr1[0] = 1
  3. arr1[1] = 2
  4. float[] arr2 = new float[] { 1f, 2f, 3f }
  5. String[] arr3 = ["abc", "xyz"] as String[]
复制代码
1.1.2 创建二维数组
  1. int[][] arr1 = new int[2][2]
  2. arr1[0][0] = 1
  3. arr1[0][1] = 2
  4. arr1[1][0] = 3
  5. arr1[1][1] = 4
  6. float[][] arr2 = new float[][] { [1f, 2f] as float[], [3f, 4f] as float[] }
  7. String[] arr3 = [["abc", "efg"], ["rst", "xyz"]] as String[][]
复制代码
1.2 遍历数组
  1. def items = new String[] { "aa", "bb", "cc" }
  2. for (item in items) {
  3.     println(item) // 打印: aa、bb、cc
  4. }
  5. for (int i = 0; i < items.size(); i++) {
  6.     println("items[$i]=${items[i]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
  7. }
  8. for (index in items.indices) {
  9.     println("items[$index]=${items[index]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
  10. }
  11. items.each {
  12.     println(it) // 打印: aa、bb、cc
  13. }
  14. items.eachWithIndex { item, index ->
  15.     println("items[$index]=$item") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
  16. }
复制代码
1.3 修改元素顺序

1.3.1 翻转元素
  1. def arr1 = [1, 2, 3, 4, 5] as Integer[]
  2. def arr2 = arr1.reverse() // 翻转Array中元素, 并生成新的Array
  3. def arr3 = arr1.reverse(true) // 在原Array上翻转元素
复制代码
1.3.2 打乱元素顺序
  1. def arr1 = [1, 2, 3, 4, 5] as Integer[]
  2. def arr2 = arr1.shuffled() // 打乱Array元素顺序, 并生成新的Array
  3. arr1.shuffle() // 打乱Array元素顺序
复制代码
1.3.3 元素排序
  1. def arr1 = [3, 1, 5, 2, 4] as Integer[]
  2. def arr2 = arr1.sort() // 从小到大排序
  3. def arr3 = arr1.sort(false) // 从小到大排序, 并生成新的Array
  4. def arr4 = arr1.toSorted() // 从小到大排序, 并生成新的Array
  5. def arr5 = arr1.sort {a, b -> b <=> a } // 从大到小排序
  6. def arr6 = arr1.sort(false) { a, b -> b <=> a } // 从大到小排序, 并生成新的Array
  7. def arr7 = arr1.toSorted { a, b -> b <=> a } // 从大到小排序, 并生成新的Array
复制代码
1.4 切片
  1. def arr1 = ["AA", "BBB", "CC", "DDD", "E"] as String[]
  2. def arr2 = arr1[1..2] // [BBB, CC], 截取1,2元素
  3. def arr3 = arr1.drop(2) // [CC, DDD, E], 丢弃前2个元素
  4. def arr4 = arr1.dropRight(2) // [AA, BBB, CC], 丢弃最后2个元素
  5. def arr5 = arr1.take(2) // [AA, BBB], 截取前2个元素
  6. def arr6 = arr1.takeRight(2) // [DDD, E], 截取最后2个元素
复制代码
1.5 统计函数
  1. def arr = [1, 2, 3, 4] as Integer[]
  2. arr.sum() // 10
  3. arr.average() // 2.5
  4. arr.max() // 4
  5. arr.min() // 1
  6. arr.count { it > 1 } // 3
复制代码
1.6 flatten
  1. def arr = [["AA", "BB"], ["CC", "DD"]] as String[][]
  2. String flatten = arr.flatten() // [AA, BB, CC, DD]
复制代码
2 List

2.1 创建 List
  1. def list1 = [1, 2, 3]
  2. def list2 = List.of(1f, 2f, 3f)
  3. def list3 = new ArrayList<Integer>()
  4. def list4 = new LinkedList<String>()
  5. def arr = new String[] { "abc", "xyz" }
  6. def list5 = arr.toList()
复制代码
2.2 增删改查

2.2.1 增加元素
  1. def list = []
  2. list.add("abc")
  3. list.add("xyz")
  4. list.add(1, "zhang")
  5. list += "san"
  6. list += ["1", "2"]
  7. list += Set.of("3", "4")
  8. println(list) // 打印: [abc, zhang, xyz, san, 1, 2, 4, 3]
复制代码
2.2.2 删除元素
  1. def list = ["abc", "efg", "xyz", "1", "2", "3"]
  2. list.remove("abc") // [efg, xyz, 1, 2, 3]
  3. list.removeAt(0) // [xyz, 1, 2, 3]
  4. list -= "xyz" // [1, 2, 3]
  5. list -= ["2", "3"] // [1]
  6. list.clear() // []
复制代码
2.2.3 修改元素
  1. def list = ["abc", "efg", "xyz"]
  2. list[0] = "ABC"
复制代码
2.2.4 访问元素

​    1)访问元素
  1. def list = ["zhang", "li", "wang"]
  2. println(list[1]) // 打印: li
  3. list[0] = "chen"
  4. list.first() // chen, 获取首个元素
  5. list.last() // wang, 获取最后一个元素
  6. list.indexOf("wang") // 2, 查找元素对应的索引
复制代码
​    2)遍历元素
  1. def items = ["aa", "bb", "cc"]
  2. for (item in items) {
  3.     println(item) // 打印: aa、bb、cc
  4. }
  5. for (int i = 0; i < items.size(); i++) {
  6.     println("items[$i]=${items[i]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
  7. }
  8. for (index in items.indices) {
  9.     println("items[$index]=${items[index]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
  10. }
  11. items.forEach {
  12.     println(it) // 打印: aa、bb、cc
  13. }
  14. items.each {
  15.     println(it) // 打印: aa、bb、cc
  16. }
  17. items.eachWithIndex { item, index ->
  18.     println("items[$index]=$item") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
  19. }
复制代码
2.3 修改元素顺序

2.3.1 翻转元素
  1. def list1 = [1, 2, 3, 4, 5]
  2. def list2 = list1.reverse() // 翻转List中元素, 并生成新的List
  3. def list3 = list1.reverse(true) // 在原List上翻转元素
复制代码
2.3.2 打乱元素顺序
  1. def list1 = [1, 2, 3, 4, 5]
  2. def list2 = list1.shuffled() // 打乱List元素顺序, 并生成新的List
  3. list1.shuffle() // 打乱List元素顺序
复制代码
2.3.3 元素排序
  1. def list1 = [3, 1, 5, 2, 4]
  2. def list2 = list1.sort() // 从小到大排序
  3. def list3 = list1.sort(false) // 从小到大排序, 并生成新的List
  4. def list4 = list1.toSorted() // 从小到大排序, 并生成新的List
  5. def list5 = list1.sort { a, b -> b <=> a } // 从大到小排序
  6. def list6 = list1.sort(false) { a, b -> b <=> a } // 从大到小排序, 并生成新的List
  7. def list7 = list1.toSorted { a, b -> b <=> a } // 从大到小排序, 并生成新的List
复制代码
2.4 切片
  1. def list1 = ["AA", "BBB", "CC", "DDD", "E"]
  2. def list2 = list1[1..2] // [BBB, CC], 截取1,2元素
  3. def list3 = list1.drop(2) // [CC, DDD, E], 丢弃前2个元素
  4. def list4 = list1.dropRight(2) // [AA, BBB, CC], 丢弃最后2个元素
  5. def list5 = list1.take(2) // [AA, BBB], 截取前2个元素
  6. def list6 = list1.takeRight(2) // [DDD, E], 截取最后2个元素
复制代码
2.5 统计函数
  1. def list = [1, 2, 3, 4]
  2. list.sum() // 10
  3. list.average() // 2.5
  4. list.max() // 4
  5. list.min() // 1
  6. list.count { it > 1 } // 3
复制代码
2.6 groupBy
  1. def list = ["AA", "BBB", "CC", "DDD"]
  2. // [2:[AA, CC], 3:[BBB, DDD]]
  3. Map<Integer, List<String>> map = list.groupBy { it.size() }
复制代码
2.7 flatten
  1. def list = [["AA", "BB"], ["CC", "DD"]]
  2. List<String> flatten = list.flatten() // [AA, BB, CC, DD]
复制代码
3 Set

3.1 创建 Set
  1. def set1 = [1, 2, 3] as Set
  2. def set2 = Set.of(1f, 2f, 3f)
  3. def set3 = new HashSet<Integer>()
  4. def set4 = new LinkedHashSet<Float>()
  5. def set5 = new TreeSet<String>()
复制代码
3.2 增删查

3.2.1 增加元素
  1. def set = ["abc", "xyz"] as Set
  2. set.add("1")
  3. set += "2"
  4. set += ["3", "4"]
  5. set += Set.of("5", "6")
  6. println(set) // [abc, xyz, 1, 2, 3, 4, 6, 5]
复制代码
3.2.2 删除元素
  1. def set = ["abc", "efg", "xyz", "zhang", "san", "li", "si"] as Set
  2. set.remove("abc") // [efg, xyz, zhang, san, li, si]
  3. set -= "xyz" // [efg, zhang, san, li, si]
  4. set -= ["zhang", "san"] // [efg, li, si]
  5. set -= Set.of("li", "si") // [efg]
  6. set.clear() // []
复制代码
3.2.3 访问元素

​    1)访问元素
  1. def set = ["zhang", "li", "wang"] as Set
  2. set.any() // true, 判断Set是否为空(容量为0)
  3. set.first() // zhang, 获取首个元素
  4. set.last() // wang, 获取最后一个元素
复制代码
​    2)遍历元素
  1. def items = ["aa", "bb", "cc"] as Set
  2. for (item in items) {
  3.     println(item) // 打印: aa、bb、cc
  4. }
  5. for (int i = 0; i < items.size(); i++) {
  6.     println("items[$i]=${items[i]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
  7. }
  8. for (index in items.indices) {
  9.     println("items[$index]=${items[index]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
  10. }
  11. items.forEach {
  12.     println(it) // 打印: aa、bb、cc
  13. }
  14. items.each {
  15.     println(it) // 打印: aa、bb、cc
  16. }
  17. items.eachWithIndex { item, index ->
  18.     println("items[$index]=$item") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
  19. }
复制代码
3.3 元素排序
  1. def set = [3, 1, 5, 2, 4] as Set
  2. def list1 = set.sort() // 从小到大排序, 并生成新的List
  3. def list2 = set.sort(false) // 从小到大排序, 并生成新的List
  4. def list3 = set.toSorted() // 从小到大排序, 并生成新的List
  5. def list4 = set.sort { a, b -> b <=> a } // 从大到小排序, 并生成新的List
  6. def list5 = set.sort(false) { a, b -> b <=> a } // 从大到小排序, 并生成新的List
  7. def list6 = set.toSorted { a, b -> b <=> a } // 从大到小排序, 并生成新的List
复制代码
3.4 切片
  1. def set = ["AA", "BBB", "CC", "DDD", "E"] as Set
  2. def list1 = set.drop(2) // [CC, DDD, E], 丢弃前2个元素
  3. def list2 = set.dropRight(2) // [AA, BBB, CC], 丢弃最后2个元素
  4. def list3 = set.take(2) // [AA, BBB], 截取前2个元素
  5. def list4 = set.takeRight(2) // [DDD, E], 截取最后2个元素
复制代码
3.5 统计函数
  1. def set = [1, 2, 3, 4]
  2. set.sum() // 10
  3. set.average() // 2.5
  4. set.max() // 4
  5. set.min() // 1
  6. set.count { it > 1 } // 3
复制代码
3.6 groupBy
  1. def set = ["AA", "BBB", "CC", "DDD"] as Set
  2. // [2:[AA, CC], 3:[BBB, DDD]]
  3. Map<Integer, List<String>> map = set.groupBy { it.size() }
复制代码
3.7 flaten
  1. def set = [Set.of("AA", "BB"), Set.of("CC", "DD")] as Set
  2. Set<String> flatten = set.flatten() // [AA, BB, CC, DD]
复制代码
4 Map

4.1 创建 Map
  1. def map1 = [:]
  2. map1.put("key", 1f)
  3. map1["xyz"] = 2f
  4. def map2 = [1:"a", 2:"b", 3:"c"]
  5. def map3 = ["1", "2", "3", "4"].toSpreadMap()
  6. println(map3) // 打印: [1:2, 3:4]
  7. def map4 = new HashMap<Integer, String>()
  8. def map5 = new Hashtable<Integer, String>()
  9. def map6 = new LinkedHashMap<Integer, String>()
  10. def map7 = new ConcurrentHashMap<Integer, String>()
  11. def map8 = new TreeMap<Integer, String>()
复制代码
4.2 增删改查

4.2.1 增加元素
  1. def map = [:]
  2. map.put("key", 1)
  3. map["xyz"] = 2
  4. map += ["abc": 3, "zhang": 4]
  5. println(map) // 打印: [key:1, xyz:2, abc:3, zhang:4]
复制代码
4.2.2 删除元素
  1. def map = ["key":1, "xyz":2, "abc":3, "zhang":4, "san":5]
  2. map.remove("key") // [xyz:2, abc:3, zhang:4, san:5]
  3. map -= ["xyz": 2, "abc":3] // [zhang:4, san:5]
  4. map.clear() // [:]
复制代码
4.2.3 修改元素
  1. def map = ["zhang":1, "san":2, "li": 3, "si": 4]
  2. map["zhang"] = 10 // [zhang:10, san:2, li:3, si:4]
  3. map.put("li", 30) // [zhang:10, san:2, li:30, si:4]
复制代码
4.2.4 访问元素

​    1)访问元素
  1. def map = ["zhang":1, "san":2, "li": 3, "si": 4]
  2. println map["zhang"] // 1
  3. println map.get("li") // 3
复制代码
​    2)遍历元素
  1. def items = ["zhang":1, "san":2]
  2. for (item in items) {
  3.     println("items[${item.key}]=${item.value}") // 打印: items[zhang]=1、items[san]=2
  4. }
  5. items.forEach { key, value ->
  6.     println("items[${key}]=${value}") // 打印: items[zhang]=1、items[san]=2
  7. }
  8. items.each {
  9.     println("items[${it.key}]=${it.value}") // 打印: items[zhang]=1、items[san]=2
  10. }
复制代码
4.3 keys 和 values
  1. def map = [1001:"Tom", 1002:"Mary"]
  2. println(map.keySet()) // [1001, 1002]
  3. println(map.values()) // [Tom, Mary]
  4. for (entry in map.entrySet()) {
  5.     println("${entry.key}: ${entry.value}") // [1001, Tom], [1002, Mary]
  6. }
  7. println(map.containsKey(1001)) // true
  8. println(map.containsValue("Tom")) // true
复制代码
4.4 getOrDefault
  1. def map = [1001:"Tom", 1002:"Mary"]
  2. // 在没有结果时返回给定的默认值
  3. def name = map.getOrDefault(1001, "xxx")
复制代码
​    声明:本文转自【Groovy】Array、List、Set、Map简介。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册