Groovy入门(三)——集合类型List
来源:互联网 发布:数据交易是指什么 编辑:程序博客网 时间:2024/06/06 10:05
List
groovy中的List结合了Java中数组和List的优势,既可以用下标的形式来访问数组中的元素,而且可以动态扩展数组,相当方便!
声明List
List有以下三种声明方式
- myList =[1,2,3]
- myList = new ArrayList() 或者 mylinkList = new Linklist(myList);
- longList = (0..100).toList()
List可以像普通数组那样通过下标来访问:
myList = ['a','b','c','d','e','f']assert myList[0] == 'a'assert myList[1..3]==['b','c','d']assert myList[1,3,5]==['b','d','f'] //remove element d to e myList[3..5] =[] //反向遍历assert myList[4..0] =['e','d','c','b','a']//负数代表从后往前遍历 -1表示最后一个元素assert myList[-1]=['f']
其他运算符:
myList = []//append a element plus(Object)myList+='a' assert myList == ['a']myList+=['b','c']//plus(Collection)assert myList == ['a','b','c'] myList = []//leftShit is like appendmyList << 'a'<<'b' //minu(Collection)assert myList -['b'] == ['a']//multiplyassert myList*2 == ['a','b','a','b']
控制结构
groovy中的控制结构和Java也非常相似, for循环的结构则跟Python相似
myList =['a','b','c']assert myList.isCase('a') candidate ='a'switch(candidate){ case myList: assert true; break default: assert false}//intersection filter 取交集assert ['x','a','z'].grep(myList) ==['a']myList = []//null List is considered false in if statementif(myList) assert false //for 循环迭代Liststr =''for(i in [1,'x',5]){ str += i} assert str == '1x5'
List主要方法
assert [1,[2,3]].flatten() == [1,2,3]assert [1,2,3].intersect([4,3,1])==[3,1]assert [1,2,3].disjoint([4,5,6]) //当做stack来使用list = [1,2,3]popped = list.pop() assert popped == 3assert list == [1,2]list.push(3) //等价于"<<"操作符assert list ==[1,2,3]assert [1,2].reverse() ==[2,1]assert [3,1,2].sort() == [1,2,3]def list =[[1,0],[0,1,2]]// compare by first elementlist = list.sort{a,b->//<==> 等价于compare方法a[0]<=>b[0]}assert list == [[0,1,2],[1,0]]//compare by sizelist = list.sort{item-> item.size()}assert list ==[[1,0],[0,1,2]]list = ['a','b','c']// remove by indexlist.remove(2)assert list ==['a','b']// remove by valuelist.remove(b)assert list == ['a']list = ['a','b','b','c']list.removeAll(['b','c'])assert list ==['a']//tranform list to anotherdef doubled = [1,2,3].collect{item->item*2}assert doubled == [2,4,6]find every element matching the closuredef odd = [1,2,3].findAll{item->item%2==1}assert odd ==[1,3]//Remove duplicate elementsdef x = [1,1,1]assert [1] == new HashSet(x).toList()assert [1] == x.unique() //Remove null elementsdef x = [1,null,1]assert [1,1] == x.findAll{it!=null}assert [1,1] == x.grep{it}def list = [1,2,3]assert list.count(2) ==1assert list.max() == 3assert list.min() == 1def even = list.find{item->item%2==0}assert even ==2assert list.every{item->item<5}assert list.any{item->item<2}def store =''list.reverseEach{item->store+=item}assert store == '321'assert list.join('-') == '1-2-3'result = list.inject(0){clinks,guests->clinks+=guests}assert result == 0+1+2+3assert list.sun() == 6
List实战——快速排序
def quickSort(list){ if(list.size() <2) return list def pivot = list[list.size().intdiv(2)] def left = list.findAll{item->item<pivot} def middle = list.findAll {item->item==pivot} def right = list.findAll{item->item>pivot} return (quickSort(left)+middle+quickSort(right))}assert quickSort([]) == []assert quickSort([1]) == [1]assert quickSort([1,2]) == [1,2]assert quickSort([2,1,3]) == [1,2,3]assert quickSort([1.0f,'a',10,null]) == [null,1.0f,10,'a']assert quickSort('Karin and Dierk') == ' DKaadeiiknnrr'.toList()
0 0
- Groovy入门(三)——集合类型List
- Groovy入门(二)——集合类型-Range
- Groovy三大集合类型
- Groovy入门(四)——集合Map
- Groovy集合(list)
- Groovy使用List集合
- groovy 的集合 List
- Groovy集合(list)
- Groovy的集合类型
- Groovy集合类型
- Groovy---集合类型
- Groovy集合类型
- Groovy集合类型
- Groovy入门(一)—— Groovy语法
- java集合(三)——集合 List
- groovy入门3 集合
- Groovy入门--集合
- Dart入门—集合类型
- Intent的带对象传值
- 剑指Offer--020-顺时针打印矩阵(蛇形打印矩阵)
- Retrofit 2.0 + OkHttp 3.0+JSON网络请求
- SEO分析:都是流量惹的祸
- HotSpot虚拟机对象揭秘之对象的创建过程探究
- Groovy入门(三)——集合类型List
- 数据结构第四章上机实验
- 罪犯转移
- 单片机MQTT实现推送简单使用
- redis服务器模型
- Hive差集运算详解
- android studio使用svn时忽略文件列表
- A1310. 矩形计算(钟沛林) 二维莫队
- Java容器类