加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy的list和map

发布时间:2020-12-14 16:52:50 所属栏目:大数据 来源:网络整理
导读:转自:http://chenfeng0104.iteye.com/blog/609075 java作为一门强大的系统编程语言,已经在世界各地广泛地应用.groovy是增强java平台的唯一脚本语言,它的语法更 加简洁,能快速开发.? List:? 定义list:def list = []? list = [1,2,3,4,5]? list操作:?

转自:http://chenfeng0104.iteye.com/blog/609075

java作为一门强大的系统编程语言,已经在世界各地广泛地应用.groovy是增强java平台的唯一脚本语言,它的语法更 加简洁,能快速开发.?

List:?

定义list:def list = []?

list = [1,2,3,4,5]?


list操作:?

def list = [1,5]

遍历?

list[1] ? ? ? ?//Result: 2?

list[-2] ? ? ? //Result: 4?

[2,5].get(1) ? ? ? ? ? ? ? //Result: 5?

[2,5].getAt(1) ? ? ? ? ? ? //Result: 5?

[2,5,7].getAt(-1) ? ? ? ? ?//Result: 7;get()不支持负数参数,getAt()支持?

pop

[2,7].pop() ? ? ? ? ? ? ?//Result: 7?

子集

[2,7].getAt(1..2) ? ? ? ?//Result: [5,7]?

list[1..3] ? ? //Result: [2,4]?

list[1..<3] ? ?//Result: [2,3]?

交集

[2,7].intersect([5,9,2]) //Result: [5,2];交集?

增删

list + [6,7] ? //Result: [1,6,7]?

list - [4,6] //Result: [1,3]?
list << 6 ? ? ?//Result: [1,6]?
list << [6,7] ?//Result: [1,[6,7]]?
[2,5].add(7) ? ? ? ? ? ? ? //Result: true; list = [2,7]?
[2,5].add(1,9) ? ? ? ? ? ? //list = [2,7,5]?

[2,5].add([7,9]) ? ? ? ? ? //Result: [2,[7,9]]?

[2,7].plus([3,6]) ? ? ? ?//Result: [2,6]?

[2,2].minus(2) ? ? ? ? //Result: [5,7]?

解开下层list

[2,9]].flatten() ? //Result: [2,9];克隆并解开下层list?

其他方法

[2,5].size() ? ? ? ? ? ? ? //Result: 2?
[2,5].isEmpty() ? ? ? ? ? ?//Result: false?

删除

[2,7].remove(1) ? ? ? ? ?//Result: 5; list = [2,7]?

反转

[2,5].reverse() ? ? ? ? ?//Result: [5,2]?

排序

[2,5].sort() ? ? ? ? ? ? //Result: [2,7]?


Map:?

定义Map:

def map = [:]?

map = ['name':'Bruce','age':27]?


键被解释成字符串:?

def x = 3?
def y = 5?
def map = [x:y,y:x] //Result: ["x":5,"y":3]?


如果要把值作为键,像下面这样:?
def city = 'shanghai'?
map."${city}" = 'china'?
map.shanghai //Result: "china"?


map操作:?

def map = [3:56,'name':'Bruce']?
def a = 'name'?
map.name ? ?//Result: "Bruce"?
map['name'] //Result: "Bruce"?
map[a] ? ? ?//Result: "Bruce"?
map[3] ? ? ?//Result: 56?
以下访问是错误的,会抛出异常?
map[name]?
map.3?


map方法:?

def map = ['name':'Bruce','age':27]?
map.containsKey('name') ? //Result: true?
map.get('name') ? ? ? ? ? //Result: "Bruce"?
map.get('weight','60kg') //Result: "60kg";会把key:value加进去?
map.getAt('age') ? ? ? ? ?//Result: 27?
map.keySet() ? ? ? ? ? ? ?//Result: [name,age,weight]?
map.put('height','175') ?//Result: ["name":"Bruce","age":27,"weight":"60kg","height":"175"]?
map.values().asList() ? ? //Result: ["Bruce",27,"60kg","175"]?
map.size() ? ? ? ? ? ? ? ?//Result: 4?


下列方法可以应用于范围、List和Map(inject和reverseEach方法只适合List和范围)?

each ? ? ? ? ? ? void each(Closure clos)迭代集合中每个元素。?
find ? ? ? ? ? ? List find(Closure clos)返回集合中第一个符合条件的元素。?
findAll ? ? ? ? ?List findAll(Closure clos)返回集合中所有符合条件的元素。?
collect ? ? ? ? ?List collect(Closure clos)返回计算后的列表。?
collect ? ? ? ? ?List collect(Collection col,Closure clos)返回计算后的列表,同时把返回值保存到col集合里。?
any ? ? ? ? ? ? ?boolean any(Closure clos)集合中有一个符合条件即返回true,否则返回false。?
every ? ? ? ? ? ?boolean every(Closure clos)集合中所有都符合条件即返回true,否则返回false。?
findIndexOf ? ? ?int findIndexOf(Closure clos)返回第一个符合条件元素在集合中的索引值(从0开始计算)。?
findLastIndexOf ?int findLastIndexOf(Closure clos)返回最后一个符合条件元素在集合中的索引值(从0开始计算)。?
inject ? ? ? ? ? Object inject(Object value,Closure clos)返回调用列表和参数的计算值。?
[1,4].inject(5) {x,y->?
? ? x + y?
}?

//Result: 15?

public class TestListInject {
	static main(args){
		def a = [1,y->
			println "x:${x},y:${y}"
			x + y
/*			x:5,y:1
			x:6,y:2
			x:8,y:3
			x:11,y:4
			15*/
		}
		println a
	}
}
reverseEach ? ? ?void reverseEach(Closure clos)反转迭代集合中每个元素。? [1,4].reverseEach {x->? ? ? print x + '-'? }? //4-3-2-1-? sort ? ? ? ? ? ? List sort(Closure clos)按照闭包的返回条件排序。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读