Groovy03_集合
Posted 李樟清
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Groovy03_集合相关的知识,希望对你有一定的参考价值。
lsn3_Groovy集合
1. List
快捷的创建方式:[]
通过下标获取元素
更精简迭代方式 each collect
更精简的加入条目 <<
展开操作符 *.
常用扩展:any every
// 1.list
// Java 写法
def lst = new ArrayList()
def lst2 = []
println lst2.class // class java.util.ArrayList
def lst3 = [] as LinkedList //class java.util.LinkedList
println lst3.class
def lst4 = ['1','2','3']
println lst4[1] // 2
println lst4[-1] // 3
println lst4[lst4.size() - 1] // 3
println lst4[4] // null
println lst4[0..1] // [1,2] 这是个新的对象
def sublst = lst4[0..1]
sublst[0] = 100
println lst4[0] // 1
println sublst[0] // 100
// 2.
for (i in lst4)
print i + " " // 1 2 3
// ☆ each
println()
def lst5 = ['1','2','3','4','5']
def sublst2 =lst5.each
print it + " " // 1 2 3 4 5
sublst2[0] = 100
println()
println lst5 // [100, 2, 3, 4, 5]
println sublst2 // [100, 2, 3, 4, 5]
// ☆ collect
def lst6 = ['1','2','3','4','5']
def sublist3 = lst6.collect
it * 2
println sublist3 //[11, 22, 33, 44, 55]
// ☆ eachWithIndex
def lst7 = ['1','2','3','4','5']
lst7.eachWithIndex String entry, int i ->
println entry + " " + i
//1 0
//2 1
//3 2
//4 3
//5 4
// ☆ reverseEach
lst7.reverseEach
print it + "" //54321
println ""
// ☆ find
def lst8 = ['1','2','9','3','4','5','3']
println lst8.find
it == '3' // 3
// 查找条目是3的,找到了就不会继续往下查找了
// is 对应 java:==
// == 对应 java:equals
// ☆ findAll
def lst9 = ['1','2','3','4','5','3']
println lst9.findAll
it == '3' // [3, 3]
// ☆ +
def lst10 = ['1','2','3']
def sublist4 = lst10 + 100
println lst10 // [1, 2, 3]
println sublist4 // [1, 2, 3, 100]
// ☆ -
def lst11 = ['1','2','3','2']
def sublist5 = lst11 - '2'
println sublist5 // [1, 3]
// ☆ <<
def lst12 = ['1','2','3','2']
lst12 << 100
println lst12 // [1, 2, 3, 2, 100]
lst12 << ['66','67']
println lst12 // [1, 2, 3, 2, 100, [66, 67]]
println lst12.flatten() // [1, 2, 3, 2, 100, 66, 67] 拉平
println lst12 // [1, 2, 3, 2, 100, [66, 67]]
//*. 展开操作符
def lst13 = ['java','groovy','cpp','c']
// 展开操作符
println lst13*.toUpperCase() // [JAVA, GROOVY, CPP, C] 新的 集合
// ☆ any
println lst13.any
it == 'java' // true
it == '11' // false
// ☆ every
def lst14 = ['java1','groovy1','cpp1','c1']
println lst14.every
it =~'1' // true 判断是否都包含1
2. map
// 键值对
def map = [B:'baidu','A':"Alibaba",T:'Tencent']
println map.class // null 因为他把.class看成一个键
println map.getClass() // class java.util.LinkedHashMap
println map.B // baidu
println map['B'] // baidu
println map.'B' // baidu
map.each
key,value->
println "$key=$value"
// B=baidu
// A=Alibaba
// T=Tencent
println map.find
key,value->
value =~'a' // B=baidu
println map + ['a':'b'] // [B:baidu, A:Alibaba, T:Tencent, a:b]
println map << ['c':'e']// [B:baidu, A:Alibaba, T:Tencent, c:e]
println map*.getKey() // [B, A, T]
以上是关于Groovy03_集合的主要内容,如果未能解决你的问题,请参考以下文章
ElasticSearch:在禁用 Groovy 的 _score 字段上进行聚合
如何将Groovy String集合转换为Java String Array?
Groovy集合遍历 ( 集合中有集合元素时调用 flatten 函数拉平集合元素 | 代码示例 )