假设我们有这样两个List:
def list1 = [1, 2, 3]
def list2 = [4, 5, 6]
我们需要检查是否第二个List的每个元素都比第一个List的对应元素大,最直接的想法是,迭代第一个List,然后通过下标访问第二个List:
def result = true
list1.eachWithIndex { n, i ->
if (n >= list2[i]) result = false
}
assert result
然而,这种方法不够直观,而且无法利用GDK本身提供的every方法。
实际上,我们可以利用
Collection.transpose()方法来实现:
assert [list1, list2].transpose().every { a, b ->
a < b
}
transpose()方法实际上就是数学中矩阵的转置,简单的来说就是行和列的交换:
assert [[1, 4], [2, 5], [3, 6]] == [list1, list2].transpose()
transpose()不止可以用于两个List,还能用于多个List。譬如,我们有第三个List:
def list3 = [7, 8, 9]
我们可以这样检查是否满足“list3 > list2 > list1”(每个对应的元素):
assert [list1, list2, list3].transpose().every { a, b, c ->
a < b && b < c
}
assert [[1, 4, 7], [2, 5, 8], [3, 6, 9]] == [list1, list2, list3].transpose()
有一点需要注意的是,如果List的长度不一,则取最短的长度:
def list4 = [1, 1, 1]
def list5 = [2, 2]
assert [[1, 2], [1, 2]] == [list4, list5].transpose()
以上代码在Groovy 1.5.7下测试通过。
分享到:
相关推荐
在《Groovy学习笔记》这本书中,你可能会学到如何快速入门Groovy,理解其基本语法,包括变量、控制流、类和对象的创建,以及如何利用Groovy的特性来提高开发效率。此外,书中可能还会涵盖Groovy在实际项目中的应用,...
这份"Java JDK 6学习笔记——ppt简体版"提供了关于这个关键版本的详细教程,适合初学者和有一定经验的开发者来深入理解Java编程。 首先,我们要了解Java JDK是什么。Java Development Kit,简称JDK,是Oracle公司...
这份“Java JDK 6学习笔记——ppt简体版”涵盖了Java语言的核心概念、语法特性以及JDK 6的新功能,旨在帮助初学者和有经验的开发者深入理解并掌握这一版本的Java开发环境。 首先,Java JDK 6的安装与配置是学习的...
### Groovy轻松入门——Grails实战基础篇 #### 搭建Grails环境及创建Grails Demo程序 **Groovy**是一种面向对象的编程语言,它运行于Java平台上,能够与Java代码无缝集成。而**Grails**则是一款基于Groovy的高性能...
3. **Groovy Shell和GroovyConsole**: 这两个工具是学习和测试Groovy代码的好帮手,可以快速尝试和验证代码片段。 4. **GString**: Groovy的字符串支持模板语法,可以方便地进行字符串格式化,如`"Hello, ${name}"`...
Groovy是一种动态、灵活的编程语言,它是Java平台上的一个主要补充,特别是在脚本编写和快速原型设计方面表现突出。...这份"Groovy学习笔记.pdf"应该会提供一个良好的起点,帮助你踏上Groovy的学习之旅。
### Groovy学习笔记知识点梳理 #### 一、Groovy简介 - **概念**:Groovy是一种灵活的脚本语言,其设计初衷是为了更好地服务于Java开发者。它具备许多现代动态语言的特点,比如Python和Ruby,同时又能够无缝地与Java...
以下是对Groovy学习笔记各章节的详细解释: ### 第1章:数字和字符串 在Groovy中,所有的数字都是Object类型的,这意味着你可以在对象上调用方法。例如,你可以直接在数字上使用加减乘除等运算符,如`12 + 8`。...
通过这个Java JDK 6学习笔记,开发者可以深入理解该版本的新特性,提升开发技能,同时也能为后续的Java JDK 7和8的学习打下坚实的基础。无论是初学者还是有经验的Java开发者,都能从中受益匪浅,进一步掌握Java编程...
通过阅读文章《Groovy学习笔记 Struts2集成--Groovy类作为Action》,你可以更深入地了解如何在实际项目中利用Groovy的特性来优化Struts2应用。提供的压缩包文件`struts2-groovy-plugin`可能包含了Struts2 Groovy插件...
通过深入学习和使用Webx,开发者可以充分利用Groovy的灵活性和生产力优势,同时享受到类似Rails的开发体验,而不必受限于Ruby语言。由于与Java平台的紧密集成,Webx还能够利用丰富的Java生态系统,为大型企业级应用...
《Show Your ToolBox——锋利的Groovy》 在IT领域,工具的选择和使用往往直接影响到工作效率和项目质量。...通过学习和熟练掌握Groovy,开发者可以提升自己的工具箱,为项目开发带来更多的可能性。
Groovy是一种动态、灵活的编程语言,它是Java平台上的一个主要面向开发者的工具,尤其在敏捷开发中备受青睐。Groovy结合了Java的强类型特性和动态语言的灵活性,使得编写代码更加简洁、高效。本学习资料将带你深入...
3. **闭包**:学习Groovy中的闭包概念,它是函数式编程的核心,常用于回调、迭代和并行处理。 4. **元编程**:理解Groovy如何通过元对象协议(Meta Object Protocol, MOP)提供元编程能力,允许在运行时动态修改类和...
Groovy是一种动态、灵活的编程语言,它是Java平台上的一个强类型、静态类型的脚本语言。Groovy结合了Java的面向对象特性和Python、Ruby的简洁语法,使得它成为Java开发者进行快速开发、自动化任务以及编写简洁代码的...
在学习Groovy语法和Gradle配置时,你可以从以下几个方面入手: - **基础语法**:理解Groovy的基本数据类型、流程控制结构、方法定义等。 - **闭包和元编程**:深入学习Groovy的两大特色,掌握闭包的使用场景和元...
Groovy是一种基于Java平台的动态编程语言,设计用于提高开发者的生产力和代码的简洁性。在Java生态系统中,Groovy以其灵活性和与...随着技术的不断发展,Groovy的学习和应用也将持续扩展,为开发者带来更多的创新可能。