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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值