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使用List集合

Groovy集合遍历 ( 集合中有集合元素时调用 flatten 函数拉平集合元素 | 代码示例 )

Groovy集合遍历 ( 集合中有集合元素时调用 flatten 函数拉平集合元素 | 代码示例 )

Groovy集合遍历 ( 调用集合的 any 函数判定集合中是否有指定匹配规则的元素 | 代码示例 )