println "=========集合定义与索引元素=============";
def lst1 = [];
println lst1.class;//java.util.ArrayList
lst1.add("a");
lst1[2] = 8;
println lst1;//["a", null, 8]
println lst1.size();//3
def arr1 = lst1 as String[]//list转换为string数组
println arr1.class;//[Ljava.lang.String;
println arr1;//{"a", null, "8"}
def arr2 = {};//闭包
println arr2.class;//Test1$_main_closure1
def lst2 = new ArrayList();
println lst2.class;
lst2[0..2] = ['a','b','c',4];//索引下标的数量不需要与range的数量一致
println lst2.size;//4
println lst2;//["a", "b", "c", 4]
lst2[0..1] = [];//索引01移除
println lst2;//["c", 4]
//通过下标索引元素,正数从前往后,负数从后往前
println "=========增加和移除元素=============";
def lst3 = ["a","b","c"];
lst3 += "d";//lst3:["a", "b", "c", "d"] 等价: lst3 = lst3.plus("d");
lst3 +=["e","f","g"];//lst3:["a", "b", "c", "d", "e", "f", "g"] 等价:lst3 = lst3.plus(["e","f","g"]);
lst3 << "A" << "B";//["a", "b", "c", "d", "e", "f", "g", "A", "B"] 类似append操作
lst3 -= "d";//["a", "b", "c","e","f","g", "A", "B"] 等价:lst3 = lst3.minus([])
lst3 -= ["e","f","g","A","B"];//["a", "b", "c"]
lst3 *=2;//["a", "b", "c", "a", "b", "c"] 等价:lst3 = lst3.Multiply(2);
println lst3;
println "==========控制结构============";
def myList = ["a","b","c"];
println myList.isCase("b")//true
switch ('b') {
case myList://b是否在myList集合中
println 'containt b';
break;
default:
println 'not containt b';
break;
}
def mylst2 = myList.grep([2,"c"]);//从myList中过滤2,"c",并返回过滤到的数据
println mylst2;//["c"]
mylst2.clear();
if(!mylst2){
println 'list is empty';
}
def sb ='';
for(v in ['a','b','c']){
sb +=v;
}
println sb;//abc
println "==========集合方法使用============";
def lst5 = [1,2,3];
def lastObj = lst5.pop();//和js的数组方法一样,弹出最后一个元素
println lastObj;//3;
println lst5;//[1,2]
//lst5.push(5);
//println lst5;//[1,2,5]
lst5 = lst5.reverse();//反转元素
println lst5;//[2,1]
lst5 = lst5.sort();//自然排序
println lst5;//[1,2]
lst5 = [[1,2],[2,3,4],[5]];
lst5.sort({item -> item.size();});//根据元素长度
println lst5;
//lst5.remove(idx);//删除指定索引
//lst5.remove(obj);//删除指定对象
//lst5.remove(lst);//删除指定集合
lst5 = [1,2,3,4,1];
lst5 = lst5.find({item -> item*2==2});//返回一个object
println lst5;//1 ,没有找到返回null
lst5 = [1,2,3,4,1];
lst5 = lst5.findAll({item -> item*2 == 2});//返回一个数组
println lst5;//[1,1] ,没有找到返回[]
lst5 = [1,2,3,[4,5,[6,7]]];
lst5 = lst5.flatten();//将所有嵌套的集合合并成一个集合
println lst5;//[1, 2, 3, 4, 5,6,7]
lst5 = [1,2,3];
lst5 = lst5.disjoint([5,6,4]);//没有交集true,有交集false
println lst5;//true
lst5 = [1,2,3,4];
println lst5.max();//求集合中最大的值 4
println lst5.min();//求集合中最小的值 1
println lst5.every();
println lst5.every({item -> item >0})//集合中的元素必须都满足才返回true
println lst5.any();
println lst5.any({item -> item >3});//集合中的元素有一个满足就返回true
lst5.each({item -> println item});//使用each迭代集合
lst5.reverseEach({item -> println item});//使用reverseEach反向迭代集合
println lst5.sum();//所有元素求和
lst5 = lst5.join("-");//使用-拼接所有元素
println lst5;
相关推荐
Groovy支持List、Set、Map等,且提供了许多便利的语法糖,如使用下标操作符[]来获取和设置元素,以及使用闭包进行集合操作,使代码更易读和写。 3. **Python集合**:Python的集合类型包括list、tuple、set和dict。...
Groovy支持多种集合数据类型,如列表(List)、映射(Map)等,这些数据类型的使用方式与Java相似,但Groovy提供了更多的语法糖,使得代码更加简洁易读。 #### 六、元编程 Groovy强大的元编程特性使得开发者能够...
Groovy的代码风格倾向于简洁和表达式丰富,例如在Groovy中可以直接使用true或false作为条件表达式,这是Groovy的动态类型特性之一。Groovy代码中的类声明和方法定义相比Java也更为简便。 5. Groovy的数据类型 ...
3. 集合与闭包:熟悉Groovy的List、Map等集合操作,以及强大的闭包特性。 4. 文件I/O和网络编程:学习如何使用Groovy进行文件操作和网络通信。 5. 测试与调试:掌握Spock测试框架,进行单元测试和集成测试。 6. 深入...
5. **集合操作**:Groovy提供了丰富的集合操作,如`each`、`collect`、`findAll`等。这些方法使得对数组和列表的操作更加方便。例如: ```groovy def numbers = [1, 2, 3, 4, 5] numbers.each { println(it) } //...
### Groovy 快速入门指南知识点...Groovy 的强大之处在于它的简洁性和灵活性,这些特性使得 Groovy 成为一种非常易于学习和使用的编程语言。通过掌握这些基础知识,您可以迅速地使用 Groovy 开发出高效、可靠的软件。
- **数据类型**:Groovy支持基本的数据类型,如数字、字符串、布尔值等,并且引入了新的集合类型,如列表(List)和映射(Map)。 - **表达式与语句**:Groovy中的表达式和语句与Java类似,但更加灵活。例如,Groovy...
4. **闭包(Closures)**:Groovy中的闭包是其核心特性之一,类似于函数引用,可以作为参数传递,也可以作为返回值。闭包在处理集合操作时特别有用,如`each`和`collect`等。 5. **GDK (Groovy Development Kit)**...
- Map和List的简写:Groovy可以用`[key1: value1, key2: value2]`创建Map,用`[value1, value2, ...]`创建List。 3. **Groovy的集合操作**: - 集合的增强操作:如`each`、`collect`、`grep`等,提供了一系列便捷...
- **集合操作**: 支持多种集合类型,如列表(List)和映射(Map),并提供了便捷的操作方法。 - **类和闭包**: Groovy支持面向对象编程,并且闭包是其一大特色。 - **控制语句**: 包括循环(`for`, `while`)、分支(`if`, ...
总的来说,Groovy的学习涵盖了基础的数字和字符串操作,进阶的List、String、闭包、Map和Range的使用,以及函数的定义。通过这些知识点,你可以开始编写简单的Groovy脚本,并逐渐熟悉其动态语言的特性。对于Java...
在探索Groovy语言的魅力时,我们不得不提及它对集合类型处理的独特之处。作为一款旨在提升开发效率与代码可读性的语言,Groovy在数组和列表对象上的操作展现出了令人赞叹的灵活性与便捷性。本篇聚焦于Groovy中的数组...
接下来,我们将介绍如何使用Jackson将List集合转化为JSON: 1. 引入依赖:在你的项目中,需要把这些Jar包添加到类路径中。如果是Maven或Gradle项目,可以在pom.xml或build.gradle文件中添加对应的依赖。 Maven...