List
Java中是如何创建的,举个例子:
def list = new ArrayList()
而在groovy中,还可以这样定义:
def list = [1, 2, 3, 4, 5]
1. add方法
list.add(5)
打印输出如下:
[1, 2, 3, 4, 5, 5]
add方法还可以用<<箭头替代:
list << 1
打印输出如下:
[1, 2, 3, 4, 5, 1]
2. remove方法
list.remove(1)
打印输出如下:
[1, 3, 4, 5]
删除的是坐标为1的元素2
3. removeElement()方法
list.removeElement(1)
打印输出如下:
[2, 3, 4, 5]
4. removeAll()方法
list.removeAll {
it % 2 != 0
}
打印输出如下:
[2, 4]
5. 减号操作符
println list - [3]
打印输出如下:
[1, 2, 4, 5]
6. 排序
def sortList = [4, -5, 9, -8, 7, -3, -2, 1, -6, -4]
sortList.sort {
a, b -> Math.abs(a) >= Math.abs(b) ? 1 : -1
}
println sortList
打印输出如下:
[1, -2, -3, 4, -4, -5, -6, 7, -8, 9]
7. 查找
find函数:
def findList = [4, -5, 9, -8, 7, -3, -2, 1, -6, -4]
println findList.find {
it % 2 != 0
}
打印输出如下:
-5
findAll函数:
println findList.findAll {
it % 2 == 0
}
打印输出如下:
[4, -8, -2, -6, -4]
any函数:
println findList.any {
it % 2 == 0
}
打印输出如下:
true
every函数:
println findList.every {
it % 2 == 0
}
打印输出如下:
false
min函数:
println findList.min {
Math.abs(it)
}
打印输出如下:
1
count函数:
println findList.count {
it % 2 == 0
}
打印输出如下:
5
Map
在Groovy中,可以这样定义映射:
def colors = [red: 'ff0000',
green: '00ff00',
blue: '0000ff']
如何获取red这个key对应的value呢?
println colors['red']
println colors.red
这两种方法都是可以的
向map中添加一个元素:
colors.black = 'fff'
输出这个colors为:
[red:ff0000, green:00ff00, blue:0000ff, black:fff]
还可以更复杂,比如添加的元素又是一个映射:
colors.complex = [a: 1, b: 2]
println colors
打印输出如下:
[red:ff0000, green:00ff00, blue:0000ff, complex:[a:1, b:2]]
1. 遍历
each函数:
def students = [
1: [number: '0001', name: 'Bob',
score: 55, sex: 'male'],
2: [number: '0002', name: 'Johnny',
score: 62, sex: 'female'],
3: [number: '0003', name: 'Claire',
score: 73, sex: 'female'],
4: [number: '0004', name: 'Amy',
score: 66, sex: 'male']
]
students.each {student ->
println "key is ${student.key}, value is ${student.value}"
}
eachWithIndex函数:
students.eachWithIndex{ student, index ->
println "index is ${index}, key is ${student.key}, value is ${student.value}"
}
each函数,直接遍历key-value:
students.each {key, value ->
println "key is ${key}, value is ${value}"
}
eachWithIndex函数,直接遍历key-value:
students.eachWithIndex{key, value, index ->
println "index is ${index}, key is ${key}, value is ${value}"
}
2. 查找
find、findAll等函数在这里就不再介绍了,这里主要介绍下groupBy:
println students.groupBy {student ->
student.value.score >= 60 ? "及格" : "不及格"
}
打印输出如下:
不及格:[1:[number:0001, name:Bob, score:55, sex:male]], 及格:[2:[number:0002, name:Johnny, score:62, sex:female], 3:[number:0003, name:Claire, score:73, sex:female], 4:[number:0004, name:Amy, score:66, sex:male]]]
3. 排序
println students.sort {student1, student2 ->
Number score1 = student1.value.score as Number
Number score2 = student2.value.score as Number
score1 >= score2 ? 1 : -1
}
打印输出如下:
[1:[number:0001, name:Bob, score:55, sex:male], 2:[number:0002, name:Johnny, score:62, sex:female], 4:[number:0004, name:Amy, score:66, sex:male], 3:[number:0003, name:Claire, score:73, sex:female]]
喜欢本篇博客的简友们,就请来一波点赞,您的每一次关注,将成为我前进的动力,谢谢!
网友评论