<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    First they ignore you
    then they ridicule you
    then they fight you
    then you win
        -- Mahatma Gandhi
    Chinese => English     英文 => 中文             
    隨筆-221  評論-1047  文章-0  trackbacks-0
    Groovy提供了許多‘匕首方法’(匕首,短小精悍也~如each,eachWithIndex,any,every,grep,join,sort,find,findAll,collect,groupBy,inject,reverse,tokenize, unique,max,min,count,sum等)來提升開發(fā)者的開發(fā)效率,但常被Java開發(fā)人員忽視。在這篇隨筆中我將為您演示各方法的使用。

    each
    遍歷list
    def?list?=?['a',?'b',?'c']
    list.each?{?elem?
    ->
    ??println?elem
    }
    運行結(jié)果:
    a
    b
    c

    遍歷map
    def?map?=?[name:"山風(fēng)小子",?address:"Shanghai"]
    map.each?{?key,?value?
    ->
    ??println?
    "$key?:?$value"
    }
    運行結(jié)果:
    name?:?山風(fēng)小子
    address?:?Shanghai

    eachWithIndex
    帶index的each
    def?list?=?['a',?'b',?'c']
    list.eachWithIndex?{?elem,?i?
    ->
    ??println?
    "$i?:?$elem"
    }
    運行結(jié)果:
    0?:?a
    1?:?b
    2?:?c

    any
    只要存在一個滿足條件(此例中的條件為elem.length() < 3)的element就返回true,否則返回false
    def?list?=?['a',?'ab',?'abc']
    list.any?{?elem?
    ->?
    ??elem.length()?
    <?3
    }
    運行結(jié)果:
    true

    every
    所有的element都滿足條件才返回true,否則返回false
    def?list?=?['a',?'ab',?'abc']
    list.every?{?elem?
    ->?
    ??elem.length()?
    <?3
    }
    運行結(jié)果:
    false

    grep
    符合條件的element會被提取出來,形成一個list
    條件以closure的形式傳入
    def?list?=?['a',?'ab',?'abc']
    list.grep?{?elem?
    ->
    ??elem.length()?
    <?3
    }
    運行結(jié)果:
    ["a",?"ab"]

    條件以regex的形式傳入,符合regex的element被提取出來形成一個list
    def?list?=?['a',?'ab',?'abc']
    list.grep(
    ~/../)
    運行結(jié)果:
    ["ab"]

    條件以collection的形式傳入,在collection中的element被提取出來形成一個list,可以看作求兩個collection的交集
    def?list?=?['a',?'ab',?'abc']
    list.grep([
    'a',?'cde',?'ab'])
    運行結(jié)果:
    ["a",?"ab"]

    join
    用指定的字符連接collection中的element
    def?list?=?[2007,?8,?26]
    list.join(
    '-')
    運行結(jié)果:
    2007-8-26

    sort
    根據(jù)指定條件進行排序
    def?list?=?[2007,?8,?26]
    list.sort?{?e1,?e2?
    ->
    ??
    return?e1?-?e2
    }
    運行結(jié)果:
    [8,?26,?2007]

    find
    查找collection中滿足條件的‘第一個’element
    def?list?=?[2007,?8,?26]
    list.find?{?elem?
    ->
    ??elem?
    <30
    }
    運行結(jié)果:
    8

    findAll
    查找collection中滿足條件的‘所有’element
    def?list?=?[2007,?8,?26]
    list.findAll?{?elem?
    ->
    ??elem?
    <?30
    }
    運行結(jié)果:
    [8,?26]

    collect
    對collection的element進行處理,并將處理結(jié)果放到一個新的collection中
    def?list?=?['a',?'b',?'c']
    list.collect?{?elem?
    ->
    ??elem?
    *?2
    }
    運行結(jié)果:
    ["aa",?"bb",?"cc"]

    對map進行處理
    def?map?=?[name:'山風(fēng)小子',?address:'Shanghai']
    map.collect?{?entry?
    ->
    ??
    "${entry.key}?:?${entry.value}"
    }
    運行結(jié)果:
    [name?:?山風(fēng)小子,?address?:?Shanghai]


    groupBy
    對collection中的element按給定條件進行分組
    def?list?=?['a',?'b',?'abc',?'ab',?'c',?'bc']
    list.groupBy?{?elem?
    ->
    ????elem.length()
    }
    運行結(jié)果:
    [1:["a",?"b",?"c"],?2:["ab",?"bc"],?3:["abc"]]


    inject
    一個累積的過程,傳入inject方法的'I'作為sum的初始值,在遍歷collection的過程中,將處理結(jié)果("$sum?$elem?")保存到sum中
    def?list?=?["love",?"you"]
    list.inject(
    'I')?{?sum,?elem?->?
    ??
    "$sum?$elem?"
    }
    運行結(jié)果:
    I?love??you?

    reverse
    將collection中各element的次序顛倒一下
    def?list?=?['a',?'b',?'c']
    list.reverse()
    運行結(jié)果:
    ["c",?"b",?"a"]

    顛倒字符串
    def?list?=?'abc'
    list.reverse()
    運行結(jié)果:
    cba

    tokenize
    指定分隔符,取得token集
    'a1/b2/c3/d4'.tokenize('/')
    運行結(jié)果:
    ["a1",?"b2",?"c3",?"d4"]

    unique
    去除collection中重復(fù)的element
    def?list?=?['a',?'b',?'b',?'a',?'c']
    list.unique()
    運行結(jié)果:
    ["a",?"b",?"c"]


    max
    求最大值
    def?list?=?[1,?2,?3]
    list.max()
    運行結(jié)果:
    3

    按指定的比較內(nèi)容(此例的比較內(nèi)容為長度length),在collection中選出最大的element
    def?list?=?['a',?'ab',?'abc']
    list.max?{?elem?
    ->
    ??elem.length()
    }

    min與max類似,求最小值,再次就不演示用法了,用法與max相同,將上述代碼中的max改為min即可

    count
    計數(shù)
    def?list?=?['a',?'ab',?'a']
    list.count(
    'a')
    運行結(jié)果:
    2

    對字符串"aaba"中的a進行計數(shù)
    def?list?=?"aaba"
    list.count(
    'a')
    運行結(jié)果:
    3

    sum
    求和
    def?list?=?[1,?2,?3]
    list.sum()
    運行結(jié)果:
    6

    求字符串的‘和’,其實就是連接字符串
    def?list?=?['a',?'b',?'c']
    list.sum()
    運行結(jié)果:
    abc

    最后,我想提醒各位一點:有時您可以將string看作list,對string使用適用于list的‘匕首方法’。

    荊軻刺秦王


    附:朝花夕拾——Groovy & Grails


    posted on 2007-08-26 13:28 山風(fēng)小子 閱讀(14308) 評論(7)  編輯  收藏 所屬分類: Groovy & Grails
    主站蜘蛛池模板: 深夜a级毛片免费无码| 黄色网址免费大全| 亚洲爆乳无码专区www| 亚洲av成人无码久久精品| 亚洲AV伊人久久青青草原| 99热亚洲色精品国产88| 亚洲国产精品国自产拍AV| 亚洲成人影院在线观看| 成人黄18免费视频| 国产偷国产偷亚洲高清在线| 亚洲国产韩国一区二区| 久久久久亚洲精品成人网小说| 国产成人亚洲综合无码| 免费萌白酱国产一区二区| 日日AV拍夜夜添久久免费| 成人免费一级毛片在线播放视频| 最近的中文字幕大全免费8| WWW亚洲色大成网络.COM| 亚洲综合在线一区二区三区| 亚洲国产片在线观看| 久久久亚洲裙底偷窥综合| 亚洲av午夜精品一区二区三区| 国产精品jizz在线观看免费| 免费视频淫片aa毛片| 久久香蕉国产线看免费| 色窝窝亚洲AV网在线观看| 亚洲成a人片在线不卡一二三区| 亚洲一区二区三区高清不卡| 国产精品亚洲精品| 亚洲熟妇AV一区二区三区宅男| 亚洲视频一区二区三区四区| 亚洲中文字幕人成乱码 | 亚洲美女视频免费| 久久水蜜桃亚洲av无码精品麻豆| 亚洲精品综合一二三区在线| 免费jjzz在在线播放国产| 很黄很黄的网站免费的| 国产在线观看片a免费观看| 毛片免费在线观看网址| 精品无码国产污污污免费| 人人狠狠综合久久亚洲高清|