概述
Range
- 在java中并没有range的概念,可range对循环的简化处理是不可小看的,如python中的range()函数
- “..”作为范围限定符的用法已经了解,如for (i in 1..10) 即i从1到10的循环
- 必须认识到任何类其实都可以实现range,即重载”..”限定符,满足下两条件即可:
- 该类型实现next和previous方法,也就是说,重写++和–操作符;
- 该类型实现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三大集合类型所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复