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' => ...
随机推荐
- 学习大牛笔记nginx + gunicorn + supervisor
安装 gunicorn pip install gunicorn pip 是一个重要的工具,python 用来管理包.还有一个最佳生产就是每次使用 pip 安装的库,都写入一个 requirement ...
- Gson小记
Gson过滤字段,只要在字段前面添加“transient”关键字即可:之前就是因为Channel字段序列化的时候导致了stack over异常.
- bzoj 2850 巧克力王国 —— K-D树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2850 只要暴力判断是否全选一个子树或全不选,如果都不是就进入查询: 要注意值有负,所以不是直 ...
- 【转】Pro Android学习笔记(四六):Dialog(3):对话框弹对话框
目录(?)[-] 帮助提示框的实现 实现再弹框 再谈fragment管理器 提示框的按钮Help,将触发弹出新的帮助提示框. 帮助提示框的实现 帮助提示框的实现很简单,利用重写onCreateView ...
- OpenStack安装后检查流程总结
安装后检查 1. 确保服务正常运行 首先查看服务的运行状态: #service xxx status 为防止对子服务有疏漏,可使用ps + grep 查看: # ps aux |grep xx 2. ...
- 查看,检查,修复pg的命令
标签(空格分隔): ceph,ceph运维,pg 如果集群状态是HEALTH_ERR 并且有pgs inconsistent,需要进行如下操作: 1. 通过下面的命令查看哪些pg状态不一致: # ce ...
- Android ANR原因以及开发时如何预防
经常可以在Android系统上发现ANR异常响应的问题.故了解一下ANR出现的原因 一. Android系统中,应用程序的响应是由ActivityManager 和 WindowManger系统服务监 ...
- 十六、xx.xx.xx格式版本号大小比较
DELIMITER $$ USE `deshangshidai`$$ DROP FUNCTION IF EXISTS `STRCMP_MY_VERSION`$$ CREATE DEFINER=`roo ...
- position应用之相对父元素的定位
分别添加以下style即可: 父元素position:relative; 子元素position:absolute; right:0px; bottom:0px;
- mysql- 修改root密码的多种方法
MySQL修改root密码的多种方法 方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' ...