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' => ...
随机推荐
- 如何查看Python 安装位置以及已经安装的库
如何查看Python 安装位置以及已经安装的库 步骤一: 1. Start 一个command prompt 2. 找到电脑中已经安装的Python 位置: where python 1 打开路径, ...
- scrollHeight
scrollHeight=显示内容高度+隐藏内容高度 参考: https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollHeight ...
- long long 与__int64使用总结
本文摘自网络.原文网址:http://blog.sina.com.cn/s/blog_6aa178410100vlwr.html 前言: 在16位环境下,int/unsigned int 占16位,l ...
- css3 tranform perspective属性
perspective 属性用于规定观察点距离元素的距离, 1 观察点距离元素越近,元素变形就越大,灭点距离越近. 2 观察点距离元素越远,元素变形越小,灭点距离也就越远. 比如设置perspecti ...
- Java中是构造器创建对象吗?
首先,这里说明” Java中是构造器创建对象 “这句话是完全错误的. Java中构造器的作用主要是为了初始化变量的值...其实在执行构造器之前,Java对象所需要的内存空间,已经产生了... 一般可以 ...
- MY_SQLCode
一.SPC查询 根据日期查询 应用到了随机函数 NEWID()可以随机生成一个列值实现随机抓取记录 CONVERT(varchar(100),列名, 23) AS TestDat ...
- Mac For Mongodb安装启动、停止及启动授权
1.到Mongodb官网下载相应的安装包 地址:https://www.mongodb.com/download-center?jmp=nav#community 2.Mac Mongodb安装过程 ...
- 关于导入excel报错的处理(xls,xlsx)
关于导入excel报错的处理(xls,xlsx) 最近在做一个将excel导入到dataGriview中的小功能在做的过程中遇到以下问题: 链接excel的链接串是这样写的 string strCon ...
- HTTP 400 错误 编译器错误消息: CS0016
问题:运行程序时提示http 400错误 解决方法: 去掉勾 尝试将网页发布到本地IIS上,发现出现以下错误: 编译器错误消息: CS0016 解决编译器错误消息: CS0016:方法如下: 一般都是 ...
- SQL标量值函数:返回汉字拼音首拼
今天遇到一个需求,客户要求在系统客户端选择客户的时候,可以用拼音首拼去快速过滤选择,此时我们在客户表里面加多一个拼音首拼字段CustPY来记录,字段加好了,我们要把所有客户名称的拼音简拼都更新到Cus ...