`

Groovy集合类与迭代

阅读更多

集合类
// List String StringBuffer Range Map File Matcher统一使用size方法获取长度
def toys=[['a','01'],['b','02'],['c','03']]
assert toys instanceof ArrayList

println toys[1]
println toys.get(1)
println toys[1..<2]
toys[2] = ['3','03']
println toys[-1]       // 倒数第一个
toys.putAt 1, ['2','02']
println toys[1]

toys<<['4','04']  // 追加元素
println toys[-1]

toys2 = toys + [4,5] // 连接元素
println toys2

def toy8 =[]
toy8 << '11'
toy8 << '22'
println toy8
toy8 << ['a','b']
println toy8

// 有些方法会修改原列表,有些方法不修改原列表
def list = [1,2,3,[4,5]]
println list.flatten(); //展开后返回新列表
println list.intersect([3,4,5]) //求交集
println list.pop();//删除列表最后元素
println list.reverse() //反转列表,返回新列表
println list.sort();
def list2 = [1,2,3,4,2]
println list2.count(2)

// Groovy 反射
def s = "hello"
println s
println s.class
["Java", "Groovy", "JavaScript"].each{println it}
s.class.methods.each{println it}


def map = [:]
assert map instanceof LinkedHashMap
assert map.size() == 0
map = [1:'toy1',2:'toy2']
assert map.containsKey(1)
assert map.containsValue('toy1')
println map
println map[2]

def map1 = ["java":"server", "groovy":"server", "javascript" : "web"]
// 从 map 获得键和值
map1.each { toy -> println toy.key + ':' + toy.value }
map1.each{
	print it.key
	println it.value
}
map1.each{k,v->
	print k
	println v
}
// 获得 map 值
print map1.java

//Groovy map.class 返回的是map中key为class 的元素 getClass才是返回类型
println ["Java", "Groovy", "JavaScript"].class
// java.util.ArrayList
def map2 = ["Java":"server", "Groovy":"server", "JavaScript":"web"]
println map.class
// null
map2.class = "I am a map element"
println map2.class
// I am a map element
println map2.getClass()
// class java.util.LinkedHashMap


def range = 1..<5
println range
println range.class
assert range instanceof List
range = 'a'..<'e'
println range
println range.class
range = 5..1
println range
println range.size();
println range.contains(2)
println range.getFrom();
println range.getTo()
println range.isReverse()
println range.subList(2,3)



for each迭代
// String迭代
def name = "xace"
name.each{
	print it + " "  //x a c e
}

//Range迭代
def range = 5..10
range.each{print it}

// Date 迭代
def today = new Date()
def nextWeek = today + 7
(today..nextWeek).each{
	println it
}

// 枚举迭代
enum DAY{
  MONDAY, TUESDAY, WEDNESDAY, THURSDAY,
    FRIDAY, SATURDAY, SUNDAY
}
DAY.each{
  println it
}
(DAY.MONDAY..DAY.FRIDAY).each{
  println it
}

//ResultSet 迭代
import groovy.sql.*

def sql = Sql.newInstance(
        "jdbc:mysql://localhost:3306/test",
        "root",
        "root",
        "com.mysql.jdbc.Driver"
)
sql.eachRow("select username from user_info"){row->
  println row.username
}

sql.eachRow("select * from user_info"){
  println("name : ${it.username}")
  println("age  : ${it.age}")
}

//文件迭代
def f = new File("D:\\新建文本文档.txt")
f.eachLine{con->
  println "this file content is ${con} "
}

// 分解文件的每一行 拆成单词
def f = new File("D:\\新建文本文档.txt")
f.splitEachLine(" "){words->
  words.each{ println it }
}


// 目录迭代 分离文件和目录
def dir = new File(".")
dir.eachFile{file->
  if(file.isFile()){
    println "FILE: ${file}"
  }else if(file.isDirectory()){
    println "DIR:  ${file}"
  }else{
    println "Uh, I'm not sure what it is..."
  }
}

// 三元操作符版
def f = new File(".")
f.eachFile{file->
  println file.isFile() ? "file : ${file}" : "dir : ${file}"
}
// 如果只对目录有兴趣,那么可以使用 eachDir() 而不是 eachFile()。
// 还提供了 eachDirMatch() 和 eachDirRecurse() 方法。

// URL 迭代
def url = new URL("http://www.sina.com")
url.eachLine{line->
  println line
}
"http://www.ibm.com".toURL().eachLine{ println it }
分享到:
评论

相关推荐

    Groovy语法系列教程之集合(六)【完结】.pdf

    本系列教程介绍Groovy编程语言的语法。Groovy的语法源自Java语法,但是通过特定类型对其进行了增强,并允许进行某些简化。

    groovy和Java相互调用1

    Groovy 调用 Java 类groovy 调用 Java class 十分方便,只需要在类前导入该 Java 类,在 Groovy 代码中就可以无缝使用该

    Java调用Groovy,实时动态加载数据库groovy脚本

    Java调用Groovy,实时动态加载数据库groovy脚本,java读取mongoDB的groovy脚本,加载实时运行,热部署

    精通 Groovy--下一代开发语言

    虽然 Groovy 的语法源于 Smalltalk 和 Ruby 这类语言的理念,但是可以将它想像成 Java 语言的一种更加简单、表达能力更强的变体。(在这点上,Ruby 与 Groovy 不同,因为它的语法与 Java 语法差异很大。) 许多 Java...

    GROOVY 入门手册扫描版

    Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以...

    apache-groovy-sdk-2.4.11

    了解 Groovy 对 Java 语法的简化变形,学习 Groovy 的核心功能,例如本地集合、内置正则表达式和闭包。编写第一个 Groovy 类,然后学习如何使用 JUnit 轻松地进行测试。借助功能完善的 Groovy 开发环境和使用技能,...

    apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本

    apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望...

    groovy-3.0.9-API文档-中文版.zip

    赠送jar包:groovy-3.0.9.jar; 赠送原API文档:groovy-3.0.9-javadoc.jar; 赠送源代码:groovy-3.0.9-sources.jar; 赠送Maven依赖信息文件:groovy-3.0.9.pom; 包含翻译后的API文档:groovy-3.0.9-javadoc-API...

    groovy入门经典,groovyeclipse 插件

    groovy入门经典,groovyeclipse 插件

    [Groovy] Making Java Groovy 英文版

    Making Java Groovy is a practical handbook for developers who want to blend Groovy into their day to day work with Java It starts by introducing the key differences between Java and Groovy and how you...

    Groovy轻松入门—搭建Groovy开发环境

    Groovy轻松入门—搭建Groovy开发环境 Groovy轻松入门—搭建Groovy开发环境

    Groovy学习笔记 PDF版

    Groovy

    Groovy-3.0.jar

    Groovy jar包 3.0.

    groovy-3.0.7.msi

    groovy

    groovy-2.3.6-installer

    groovy-2.3.6-installer windows安装版本

    groovy eclipse plugin2

    groovy eclipse plugin2groovy eclipse plugin2groovy eclipse plugin2groovy eclipse plugin2groovy eclipse plugin2groovy eclipse plugin2groovy eclipse plugin2

    Groovy.in.Action.2nd.Edition.1935182

    Groovy in Action, Second Edition is the undisputed definitive reference on the Groovy language. Written by core members of the Groovy language team, this book presents Groovy like no other can—from ...

    groovy

    groovy的帮助文档 !!!!!

    groovy 源码

    groovy 源码

Global site tag (gtag.js) - Google Analytics