Groovy集合类与迭代

[b]集合类[/b]
// 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)



[b]for each迭代[/b]

// 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 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值