11 Lists
1 Lists
1.1 定义并访问Lists
List list = new List[].也可以使用泛型。访问list中的元素,可以使用list.get(i) or list[i]。
|
package list class ListMapTest { public static void main(args){ List<Integer> list = [1,2,3,4]; println list[2] List<Person> persons = list[]; Person p = new Person("Jim","Knopf") persons[0] = p println persons.size() println persons[0].firstName println persons.get(0).firstName } } |
输出:
Groovy也允许直接访问list中的元素。如下:
|
package list class ListMapTest2 { static main(args) { List<Person> persons = new ArrayList<Person>(); persons[0] = new Person("Jim","Knopf") persons[1] = new Person("Test","Test") println persons.firstName } } |
输出:
1.2 list与array互转
Groovy自动转换一个Array到一个List,反之亦然。如下:
|
package list class List2array { static main(args) { def String[] strings = "This is a long sentence".split(); //转换Array为List def List listStrings = strings; //转换List为Array def String[] arrayStrings = listStrings println strings.class.name println listStrings.class.name println arrayStrings.class.name } } |
输出:
1.3 List 方法
下边的list方法,非常有用
- reverse()
- sort()
- remove(index)
- findAll{closure} - returns all list elements for which the closure validates to true
- first()
- last()
- max()
- min()
- join("string") 合并list中所有的元素,调用toString方法,并且连接到一起
- << e 追加元素e到该list
grep 方法,用于过滤集合中指定的元素。
1.4 Operator overloading in Lists
List支持操作符重载。可以使用+来连接字符串,使用-来截取lists并且使用left-shift操作符来向list中增加元素。
1.5 Spreaddot 操作符
*. 分隔符,常被用来调用一个集合中的所有元素。操作的结果是另外一个集合对象。
|
package list class SpreaddotTest { static main(args) { def list = ["Hello","Test","Lars"] //计算list中的每个字符串元素的长度 def sizeList = list*.size() assert sizeList == [5,4,4] } } |
输出:
空,说明正确。
1.6 搜索list(find, findall and grep)
搜索方法:
- findAll{closure} - returns all list elements for which the closure validates to true
- find{closure} - returns the list element for which the closure validates to true
- grep(Object filter) - Iterates over the collection of items and returns each item that matches the given filter - calling the Object#isCase. This method can be used with different kinds of filters like regular expressions, classes, ranges etc.
|
package list class FindAndGrepTest { static main(args) { def l1 = ['test',12,20,true] //检索Boolean类型的元素 assert[true] == l1.grep(Boolean) //检索以G开头的元素 assert['Groovy'] == ['test','Groovy','Java'].grep(~/^G.*/) //返回list中包含b和c的元素,注:['b', 'c'],是一个集合 assert ['b', 'c'] == ['a', 'b', 'c', 'd'].grep(['b', 'c']) //返回在range内的元素 assert[14,16]==[5,14,16,75,12].grep(13..17) //equal assert[42.031] == [15,'Peter',42.031,42.032].grep(42.031) //返回基于闭包的大于40的数 assert[50,100,300] == [10, 12, 30, 50, 100, 300].grep({it > 40}) } } |
11 Lists的更多相关文章
- java collections读书笔记(11) Lists
继续这个系列,好久没学习了,懒惰呀. Set接口,实际上是collection 类别中最简单的一个接口,因为它并没有比Collection 接口增加任何的内容,相对而言,大家可能更喜欢List接口和它 ...
- Redis数据类型Strings、Lists常用操作指令
Redis数据类型Strings.Lists常用操作指令 Strings常用操作指令 GET.SET相关操作 # GET 获取键值对 127.0.0.1:6379> get name (nil) ...
- Python命令 (if __name__=="__main__":)
1. 语法 1.以#号开头的语句是注释 2.请务必注意,Python程序是大小写敏感的,如果写错了大小写,程序会报错. 3.按照约定俗成的管理,应该始终坚持使用4个空格的缩进. 4.当语句以冒号:结尾 ...
- 【IOS笔记】View Programming Guide for iOS -1
原文:View Programming Guide for iOS View and Window Architecture Views and windows present your applic ...
- UNIX标准及实现
UNIX标准及实现 引言 在UNIX编程环境和C程序设计语言的标准化方面已经做了很多工作.虽然UNIX应用程序在不同的UNIX操作系统版本之间进行移植相当容易,但是20世纪80年代UNIX版本 ...
- crontab 例子
一个简单的 crontab 示例 0,20,40 22-23 * 7 fri-sat /home/ian/mycrontest.sh 在这个示例中,我们的命令在 7 月的每个星期五和星期六晚上 10 ...
- Client Dataset Basics
文章出处: http://www.informit.com/articles/article.aspx?p=24094 In the preceding two chapters, I discus ...
- Oracle 11gR2 rac 的各项服务说明
安装结束后,会产生一些后台进程来确保集群正常工作并能够与外部通讯.其中的一些有序linux平台的要求需要以root用户权限来启动.比如,网络配置的改动就需要更高的权限.其他后台进程将以grid软 ...
- Laravel之备忘项(不定期更新)
1.自定义字段验证错误信息 $this->validate($request, ['name' => 'required|max:50'], ['name.required' => ...
随机推荐
- UnityShader实例15:屏幕特效之Bloom
http://blog.csdn.net/u011047171/article/details/48522073 Bloom特效 概述 Bloom,又称“全屏泛光”,是游戏中 ...
- CF 1036B Diagonal Walking v.2——思路
题目:http://codeforces.com/contest/1036/problem/B 比赛时只能想出不合法的情况还有走到终点附近的方式. 设n<m,不合法就是m<k.走到终点方式 ...
- bzoj 3730 震波 —— 动态点分治+树状数组
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3730 建点分树,每个点记两个树状数组,存它作为重心管辖的范围内,所有点到它的距离情况和到它在 ...
- bzoj 1670 Building the Moat护城河的挖掘 —— 凸包
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1670 单调栈维护凸包即可,用叉积判断: 维护上凸壳,然后把所有点的纵坐标翻转再求上凸壳即可, ...
- bzoj 2406 矩阵 —— 有源汇上下界可行流
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2406 这题,首先把题目那个式子的绝对值拆成两个限制,就成了网络流的上下界: 有上下界可行流原 ...
- TModJS:目录
ylbtech-TModJS:目录 1.返回顶部 1. https://github.com/aui/tmodjs 2. https://www.npmjs.com/package/tmodjs 3. ...
- NameNode内存优化---基于缓存相同文件名的方法
NameNode内存优化---重用相同的文件名 原创文章,转载请注明:博客园aprogramer 原文链接:NameNode内存优化---重用相同的文件名 众所周知,Hadoop集 ...
- [.net]手机APP与IIS服务器联调配置
前端时间写过一段时间接口,在后期的时候,出现了一些无法通过查看日志来找出问题所在的bug.于是,将手机APP连接到IIS服务器上进行调试,下面是配置的具体步骤 1. 配置IIS 添加网站,将物理路径 ...
- linux日常管理-top动态查看负载
动态查看负载命令,具体哪个程序,哪个进程造成的系统负载. top 回车查看 3秒更新一次 第一行和uptime和w第一行显示的一样. CPU使用率,us sy 内存相关,Mem 一共多少,使用了多少, ...
- java poi导出Excel 总结
首先下载 Apache 的POI jar包 将更目录下的poi-3.8-20120326.jar 和lib下的三个jar包导入 如下图: 首先必须搞一个通用的工具类,网上找的,能用就行,java就是这 ...