我是靠谱客的博主 超帅香烟,最近开发中收集的这篇文章主要介绍Groovy三大集合类型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Range

  • 在java中并没有range的概念,可range对循环的简化处理是不可小看的,如python中的range()函数
  • “..”作为范围限定符的用法已经了解,如for (i in 1..10) 即i从1到10的循环
  • 必须认识到任何类其实都可以实现range,即重载”..”限定符,满足下两条件即可:
    1. 该类型实现next和previous方法,也就是说,重写++和–操作符;
    2. 该类型实现java.lang.Comparable接口;也就是说实现compareTo方法, 实际上是重写<=>操作符。

重载”..”实例:

class WeekDay implements Comparable{
    static final DAYS = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
    private int index = 0;
    WeekDay(String day){
        index = DAYS.indexOf(day)
    }   
    WeekDay next(){
        return new WeekDay(DAYS[(index+1)%DAYS.size()])
    }
    WeekDay previous(){
        return new WeekDay(DAYS[index-1])
    }
    int compareTo(Object other){
        return this.index <=> other.index
    }
    String toString(){
        return DAYS[index]
    }
}
def mon = new WeekDay('Mon')
def fri = new WeekDay('Fri')
for (i in mon..fri)
print i  //prints MonTueWedThuFri

List

  • list符号为[],默认为java中的ArrayList
  • GDK扩展了所有的数组、容器对象和字符串,为它们增加了一个toList方法,这个方法返回一个由数组(容器或者字符串)元素构成新的list对象,字符串对象被处理为一个character列表。
  • GDK扩展功能使list操作更容易,极其像python中列表处理

一些重要的方法:

def list = [1,'m',2,3]
//访问list
println list[0..2]  //prints [1,'m',2]
println list[-1] //prints 3

//增删list
list +=['a','b']  //list变成 [1,'m',2,3,'a','b']
list -=['a','b']  //list变回 [1,'m',2,3]
list << 'a'
list.remove(1)  

//循环中
for (i in list)

//方法
list.removeAll()
list.sort()
list.pop() //把最后一个元素pop出去
list.join('-') //'-'连接元素,返回字符串

//结合闭包
list.findAll{} //找到所有满足条件的 返回list
list.find{} //找到第一个满足条件的 元素返回
list.any{} //任何满足 返回true
list.every{} //every每个都满足 返回true
list.collect{} //对每个元素进行操作

Map

  • [key:value,key:value]为map的书写形式
  • map的缺省类型为java中的HashMap
  • 利用entry 的key,value属性访问
def map = ['a':1,'b':2]
//访问map
map.a //即返回1
map['a'] 

//方法
map.containsKey()
map.containsValue
map.keySet() //返回keySet
map.values()  //返回valueSet

**其他一些方法类比list,如collect,any,every,each,find,findAll**

最后

以上就是超帅香烟为你收集整理的Groovy三大集合类型的全部内容,希望文章能够帮你解决Groovy三大集合类型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部