首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

触动你朋友的11条Groovy超炫代码

2012-12-26 
打动你朋友的11条Groovy超炫代码Dustin Marx在其博文中,跟读者分享了11条Groovy的超炫代码。List中的每个元

打动你朋友的11条Groovy超炫代码

Dustin Marx在其博文中,跟读者分享了11条Groovy的超炫代码。

  1. List中的每个元素乘2:1(1..10)*.multiply(2)
  2. List求和:1//元素均为为数字2(1..1000).sum()3//元素含有字符4['a',3,'z'].sum()??//结果为字符串‘a3z’
  3. List中是否含有某个字符串
    1def?wordList = ['groovy',?'akka',?'grails framework',?'spock','typesafe']2def?tweet =?'This is an example tweet talking about groovy and spock.'3wordList.any { word -> tweet.contains(word) }
    01//该方法同样适用于对象02class?Person{03????String name04}05def?person1=new?Person(name:'person1')06def?person2=new?Person(name:'person2')07def?person3=new?Person(name:'person3')08def?wordList = [person1,person2]09def?tweet = [person3]10wordList.any { it -> tweet.contains(it) }

    上述代码结果为false,如果tweet = [person3,person1],结果就为true

  4. 文件内容读取,易如反掌:1//读取所有内容2new?File("data.txt").text3//按行读取,返回List4new?File("data.txt").readLines()
  5. 生日快乐!1(1..4).each?{?println?'Happy Birthday '?+ ((it ==?3) ??'dear Arturo'?:?'to You') }
  6. 按条件拆分List1def?(passed, failed) = [49,?58,?76,?82,?88,?90].split{ it >?60?}
  7. 获取和解析XML Web服务1def?results =?newXmlSlurper().parse('http://search.twitter.com/search.atom?&q=groovy')
  8. 找出List中最大最小值:1[14,?35, -7,?46,?98].min()2[14,?35, -7,?46,?98].max()
  9. 使用GPars提供的直观、安全的方式控制Groovy的并行任务1import?groovyx.gpars.*2GParsPool.withPool {?def?result = dataList.collectParallel { processItem(it) } }
  10. 找质数算法(Sieve of Eratosthenes筛法)1def?t =?2..1002(2..Math.sqrt(t.last())).each?{ n -> t -= ((2*n)..(t.last())).step(n) }3println?t

    这个方法来自于Groovy Prime Numbers的评论。

  11. 有奖问答:FizzBuzz问题 - 打印1到100这些数字,遇到数字为3的倍数的时候,打印“Fizz”替代数字,5的倍数用“Buzz”代替,既是3的倍数又是5的倍数打印“FizzBuzz”。1for (i?in?1..100) {2????println?"${i%3?'':'Fizz'}${i%5?'':'Buzz'}"??: i3}

另附两个有趣问题的解答:

现在手头有0.5美元、0.25美元、10美分、5美分、1美分,将1美元换成这些零钱,有多少种换法:

01def?count=002101.times{ x1 ->?21.times{03????x2 ->?11.times{04????????x3 ->?5.times{05????????????x4 ->?3.times{06????????????????x5 ->?if(x1*1+x2*5+x3*10+x4*25+x5*50?==?100){07?????????????????????????count++08?????????????????????????println?"$x1*1+$x2*5+$x3*10+$x4*25+$x5*50 == 100"09????????????????????}10????????????????}11????????????}12????????}13????}14}15println?count

汉诺塔问题:

01def?hanoita(n, a, b, c){02????if(n==1){03????????println?"$n : $a -> $c"04????}else{05????????hanoita n-1, a, c, b06????????println?"$n : $a -> $c"07????????hanoita n-1, b, a, c08????}09}10hanoita?5,?'a',?'b',?'c'

奇妙吧?就是这么简单!对于上述代码,如果你有更好的提议,也可以分享给大家。

热点排行