groovy(6)-list和map

package variable

//list定義方式,默認list是java的arrayList

def list=[]

def list1=[10,3,14,-4,5]

//定義list為數(shù)組

def list2=[2,3,4,2] as int [] //使用as 轉(zhuǎn)為數(shù)組

int [] list3=[3,3,2,4,5]

//列表的排序

def sortList=[4,3,2,-6,-2,49]

Collections.sort(sortList)

println(sortList)//[-6, -2, 2, 3, 4, 49]

//自定義排序規(guī)則

Comparator mc={a,b->

????????a==b?0:Math.abs(a)

}

Collections.sort(sortList,mc)

println(sortList) //[-2, 2, 3, 4, -6, 49]

//groovy中的方便排序

list1.sort()

println(list1) //[-4, 3, 5, 10, 14]

list1.sort(mc)

println(list1) //[3, -4, 5, 10, 14]

def sortStringlist=['abc','z','adsg','adsgdsr','asddd']

sortStringlist.sort{ it->it.size() }

println(sortStringlist) //[z, abc, adsg, asddd, adsgdsr]

def findlist=[-2,3,4,1,13,-5]

int result=findlist.find{

????????returnit%2==0

}

println(result) //-2

def result2=findlist.findAll{return it%2!=0}

println(result2) //[3, 1, 13, -5]

def result3=findlist.any {return it%2!=0} //是否有奇數(shù)

println(result3) //true

def result4=findlist.every{return it%2!=0 } //是否都是奇數(shù)

println(result4) //false

println(findlist.max{return Math.abs(it)}) //13

println(findlist.min{return Math.abs(it)}) //1

println(findlist.count{return it >=4}) //2 統(tǒng)計個數(shù)

//groovy中的map,默認是java中的linkedHashMap , map中key一般使用字符串或數(shù)字,默認是單引號String

def colors=[red:'ff000000',green:'00ff2334',blue:'00ff343233']

//索引,同樣也可以使用java 的get 方法

println(colors.blue) //00ff343233

println(colors['blue']) //00ff343233

colors.yellow='00ff3334'

println(colors.toMapString())?

//輸出:[red:ff000000, green:00ff2334, blue:00ff343233, yellow:00ff3334]

colors.complex=[2:2,3:2]

println(colors.toMapString())?

//[red:ff000000, green:00ff2334, blue:00ff343233, yellow:00ff3334, complex:[2:2, 3:2]]

println(colors.getClass()) //class java.util.LinkedHashMap

//使用其他map

def colors2=[red:'wewew',green:'adss'] as HashMap

HashMap color3=[red:'sdsese',blue:'sdses']

//map常用操作

def students=[

1:[number:'001',name:'boj',score:442,sex:'male'],

2:[number:'002',name:'boaj',score:444,sex:'fmale'],

3:[number:'003',name:'bobj',score:445,sex:'male'],

4:[number:'004',name:'bocj',score:442,sex:'fmale'],

]

//遍歷

students.each{

? ?defstudent->println("dddd::student::key=${student.key}::sudent::value=${student.value}")

}

//帶索引的遍歷

students.eachWithIndex{ def student , int i ->

????println("cccc:::index:::${i}::::key=${student.key}::::value=${student.value}")

}

//key ,value 索引,出來遍歷entry,也可以直接遍歷索引,

students.each {

????key,value->println("aaaa::::student::key=${key}:::sudent:::value=${value}")

}

//遍歷帶索引,key,value

students.eachWithIndex{ key ,value, int i -> ????println("bbbb::index:::${i}::::key=${key}::::value=${value}")

}

//find方法

def entry=students.find { def studetn->return studetn.value.score>442 };

println(entry) //2={ number=002, name=boaj, score=444, sex=fmale }

def entrys=students.findAll { return it.value.score>442 }

println(entrys)? //[2:[number:002, name:boaj, score:444, sex:fmale], 3:[number:003, name:bobj, score:445, sex:male]]

def counr=students.count { return it.value.score>442&&it.value.sex=='fmale' }

println(counr)

def names=students.findAll { return it.value.score>442 }.collect { return it.value.name }//添加收集的條件

println(names)//[boaj, bobj]

//分組,類似sql語句

def group=students.groupBy {return it.value.score>442?'及格':'不及格'}

println(group.toMapString())

//[不及格:[1:[number:001, name:boj, score:442, sex:male], 4:[number:004, name:bocj, score:442, sex:fmale]], 及格:[2:[number:002, name:boaj, score:444, sex:fmale], 3:[number:003, name:bobj, score:445, sex:male]]]

//map排序

def sort=students.sort{def s1,def s2->

????????????Number score1=s1.value.score

????????????Number score2=s2.value.score

????????????return? score1==score2?0:score1>score2?1:-1

}

println(sort.toMapString())

//[1:[number:001, name:boj, score:442, sex:male], 4:[number:004, name:bocj, score:442, sex:fmale], 2:[number:002, name:boaj, score:444, sex:fmale], 3:[number:003, name:bobj, score:445, sex:male]]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末妻枕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子租副,更是在濱河造成了極大的恐慌封寞,老刑警劉巖捺萌,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件需五,死亡現(xiàn)場離奇詭異护桦,居然都是意外死亡廊宪,警方通過查閱死者的電腦和手機浓瞪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門懈玻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人追逮,你說我怎么就攤上這事酪刀〈舛妫” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵骂倘,是天一觀的道長眼滤。 經(jīng)常有香客問我,道長历涝,這世上最難降的妖魔是什么诅需? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮荧库,結(jié)果婚禮上堰塌,老公的妹妹穿的比我還像新娘。我一直安慰自己分衫,他們只是感情好场刑,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚪战,像睡著了一般牵现。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上邀桑,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天瞎疼,我揣著相機與錄音,去河邊找鬼壁畸。 笑死贼急,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的捏萍。 我是一名探鬼主播太抓,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼照弥!你這毒婦竟也來了腻异?” 一聲冷哼從身側(cè)響起进副,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤这揣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后影斑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體给赞,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年矫户,在試婚紗的時候發(fā)現(xiàn)自己被綠了片迅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡皆辽,死狀恐怖柑蛇,靈堂內(nèi)的尸體忽然破棺而出芥挣,到底是詐尸還是另有隱情,我是刑警寧澤耻台,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布空免,位于F島的核電站,受9級特大地震影響盆耽,放射性物質(zhì)發(fā)生泄漏蹋砚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一摄杂、第九天 我趴在偏房一處隱蔽的房頂上張望坝咐。 院中可真熱鬧,春花似錦析恢、人聲如沸墨坚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽框杜。三九已至,卻和暖如春袖肥,著一層夾襖步出監(jiān)牢的瞬間咪辱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工椎组, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留油狂,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓寸癌,卻偏偏與公主長得像专筷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蒸苇,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355