groovy的集合类型

groovy的集合类型

声明

groovy的集合类型本质上和JAVA差不多,groovy在JAVA的API基础上拓展了很多语法糖。

这过程声明一个集合可以使用:

def list = [1,2,3,4] 

这样声明的集合类型是ArrayList,ArrayList的底层是数组,如果我们需要用LinkedList的话,我们可以

def a = [1,2,3,4,5] as LinkedList

assert a instanceof LinkedList

语法

  • 我们可以通过指定下角标或者是通过Range来获取集合中的元素
def list = [2,3,4,5,6]

assert list[1..2] == [3,4]
assert list[1,2,4] == [3,4,6]
  • 如果我们想从后往前计数的话,可以使用负数, -1就代表着倒数第一个
    list[0…-1] 就是整个list集合

  • 如果想删除集合指定范围内的元素,可以

list[3..4] = []
assert list = [2,3,4]
  • 如果想向指定位置加入元素或者集合,可以
list1 += "a"
list1 += ["b","c"]
  • 同理删除指定的元素可以
list1 -= "b"
  • 追加指定的元素也可以使用操作符
list1 << "d" << "f"

这样元素“d”和元素“f”会被追加到集合的末尾

  • 想复制集合里面的元素可以
list *= 2

这样集合里面的元素会被复制一遍

  • 在switch语句中的使用
    集合实现了isCase方法,所以我们可以这么玩
list2 = ["a", "b", "c"]
assert "a" in list2

switch ("a") {
    case list2:
        assert true
        break
    default:
        assert false
        break
}

assert list2.grep(["a","d"]) == ["a"]

for (s in list2) {
    println s
}

补充方法

assert [1,[2,3]].flatten() == [1,2,3] //把集合中的集合打散成单个元素放入集合
assert [1,2,3].intersect([3]) == [3] //取交集
assert [1,2,3].disjoint([4,5]) //判断是不是没有交集

// 使用集合模拟Stack
list3 = [1,2,3]
poped = list3.pop()

assert poped == 1
assert list3 == [2,3]

// 反转
assert [1,2].reverse() == [2,1]
// 排序
assert [2,5,3,12].sort() == [2,3,5,12]

扫描二维码关注公众号,回复: 9394025 查看本文章

// 集合使用闭包查找符合条件的元素
def odd = [1,2,3].findAll {
it % 2 == 0
}

println odd

def x = [1,1,1,2,3]
// 统计元素的个数
println x.count(2)
// 查找元素的最大值
println x.max()
// 查找元素的最小值
println x.min()
// 集合元素去重
x = x.unique()

发布了156 篇原创文章 · 获赞 19 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/qq_36929361/article/details/104148492