groovy的集合类型
声明
groovy的集合类型本质上和JAVA差不多,groovy在JAVA的API基础上拓展了很多语法糖。
这过程声明一个集合可以使用:
1
2def list = [1,2,3,4]
这样声明的集合类型是ArrayList,ArrayList的底层是数组,如果我们需要用LinkedList的话,我们可以
1
2
3
4def a = [1,2,3,4,5] as LinkedList assert a instanceof LinkedList
语法
- 我们可以通过指定下角标或者是通过Range来获取集合中的元素
1
2
3
4
5def 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集合 -
如果想删除集合指定范围内的元素,可以
1
2
3list[3..4] = [] assert list = [2,3,4]
- 如果想向指定位置加入元素或者集合,可以
1
2
3list1 += "a" list1 += ["b","c"]
- 同理删除指定的元素可以
1
2list1 -= "b"
- 追加指定的元素也可以使用操作符
1
2list1 << "d" << "f"
这样元素“d”和元素“f”会被追加到集合的末尾
- 想复制集合里面的元素可以
1
2list *= 2
这样集合里面的元素会被复制一遍
- 在switch语句中的使用
集合实现了isCase方法,所以我们可以这么玩
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18list2 = ["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]
// 集合使用闭包查找符合条件的元素
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()
最后
以上就是帅气发箍最近收集整理的关于groovy的集合类型的全部内容,更多相关groovy内容请搜索靠谱客的其他文章。
发表评论 取消回复