Groovy的集合类型
ranges(范围),lists(列表),maps(映射) ? -------------ranges------------- left..right (left..right) (left..<right) ? ranges的方法有contains(xx),each{闭包}等,除此之外还有lists.grep(ranges) ? ---------lists与ranges结合产生强大的灵活性---------------- ? myList=['a','b','c','d','e','f'] assert myList[0..2]==['a','c'] assert myList[0,2]==['a','c'] ? //replace myList[0..2]=['x','y','z'] assert myList==['x','z','f'] ? //remove myList[0..2]=[] assert myList==['d','f'] //insert or replace myList[2..2]=['f','x'] assert myList==['d','f','x'] ? 对于list除了可以正数索引访问,也可以通过负数索引访问 如lists[-1]指的就是数组的最后一个元素 ? list的findAll方法有一个 闭包的参数,返回的是一个数组。当闭包内结果为true时 如a=['a',1] a.findAll{print it} 结果为:ab1 ? 二分法排序在groovy中的经典案例,同时用到了 递归 ? def quickSort(list){ ?? ?if(list.size<=1) return list ?? ?def pivot =list[list.size.intdiv(2)] ?? ?def left=list.findAll{it<pivot} ?? ?def middle=list.findAll{it==pivot} ?? ?def right=list.findAll{it>pivot} ?? ?return quickSort(left)+middle+quickSort(right) } ? ------------------map----------------------- 一般情况下map的key都是string类型,在此我们可以省略单引号。 assert ['a':1]==[a:1]? ? ? m=[a:1] assert m.a==1 assert m.get('a')==1 assert m['a']==1 assert m.b==null ? 如果key包含像点.这样的特殊字符,需要引号包围 ? m=['a.b':1] assert m.'a.b'==1 ? ? m.keys m.keySet m.entrySet ? assert m.any{it.key==xx} assert m.every{it.value==xx} any和every返回boolean,any表示只要有符合条件的就返回true,every表示每一个都符合才返回true ? map的遍历可以通过each来处理,m.each{entry->entry.key;entry.value}或者m.each{key,value->xxxx} ? m.subMap(['key1','key2']) ? GString还有tokenize方法,意义为将一段string按照默认分隔符,分割为一个个word (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |