package Ġcom . kotlin . j ing bin . kotlin app . lambda Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġcom . kotlin . j ing bin . kotlin app . R Ċ Ċ /** Ċ Ġ* Ġ 5 . 2 Ġ éĽĨåĲĪ çļĦ åĩ½æķ° å¼ı API Ċ Ġ* Ġ*/ Ċ class ĠLambda 2 Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ lambda ) ĊĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" éĽĨåĲĪ çļĦ åĩ½æķ° å¼ı API " ĊĊĠĠĠĠĠĠĠ Ġ/* --------------- Ġ 5 . 2 . 1 Ġ åŁºç¡Ģ ï¼ļ filter ĠåĴĮ Ġmap ------------- */ ĊĠĠĠĠĠĠĠ Ġ// Ġfilter åĩ½æķ° éģįåİĨ åĲĪ éĽĨ å¹¶ éĢī åĩº åºĶçĶ¨ ç»Ļ å®ļ lambda åĲİ ä¼ļ è¿ĶåĽŀ true çļĦ éĤ£ äºĽ åħĥç´ł ï¼ļ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠlistOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ åıªæľī åģ ¶ æķ° çķĻ äºĨ ä¸ĭ æĿ¥ ĊĠĠĠĠĠĠĠ Ġprintln ( list . filter Ġ{ Ġit Ġ% Ġ 2 Ġ== Ġ 0 Ġ}) // Ġ[ 2 , 4 ] ĊĊĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ ä½ł æĥ³ çķĻ ä¸ĭ éĤ£ äºĽ è¶ħè¿ĩ 3 0 å² ģ çļĦäºº ï¼Į åı¯ä»¥ çĶ¨ filter ĊĠĠĠĠĠĠĠ Ġval Ġpeople Ġ= ĠlistOf ( Person (" j ing bin ", Ġ 1 2 ), ĠPerson (" jin been ", Ġ 2 3 )) ĊĠĠĠĠĠĠĠ Ġprintln ( people . filter Ġ{ Ġit . age Ġ> Ġ 2 0 Ġ}) // Ġ Ġ[ Person ( name = jin been , Ġage = 2 3 )] ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġfilter åı¯ä»¥ ç§»éĻ¤ ä¸į æĥ³è¦ģ çļĦ åħĥç´ł ä½Ĩ ä¸įä¼ļ æĶ¹åıĺ è¿ĻäºĽ åħĥç´ł ãĢĤ map çĶ¨äºİ åħĥç´ł çļĦ åıĺ æį¢ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* Ġmap Ġåĩ½æķ° å¯¹ éĽĨåĲĪ ä¸ŃçļĦ æ¯ı ä¸Ģä¸ª åħĥç´ł åºĶçĶ¨ ç»Ļ å®ļçļĦ åĩ½æķ° å¹¶ æĬĬ ç»ĵæŀľ æĶ¶éĽĨ åĪ° ä¸Ģä¸ª æĸ° éĽĨåĲĪ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// ĠæĬ Ĭ æķ°åŃĹ åĪĹè¡¨ åıĺ æį¢ æĪĲ ä»ĸä»¬ å¹³ æĸ¹ çļĦ åĪĹè¡¨ ĊĠĠĠĠĠĠĠ Ġval Ġlist 2 Ġ= ĠlistOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġprintln ( list 2 . map Ġ{ Ġit Ġ* Ġit Ġ}) // Ġ[ 1 , Ġ 4 , Ġ 9 , Ġ 1 6 ] ĊĊĠĠĠĠĠĠĠ Ġ// Ġ æīĵåį° å§ĵ åĲį åĪĹè¡¨ ï¼Į èĢĮä¸įæĺ¯ äººçļĦ å®Įæķ´ ä¿¡æģ¯ ĊĠĠĠĠĠĠĠ Ġval Ġpeople 2 Ġ= ĠlistOf ( Person (" j ing bin ", Ġ 1 2 ), ĠPerson (" jin been ", Ġ 2 3 ), ĠPerson (" h aha ", Ġ 2 3 )) ĊĠĠĠĠĠĠĠ Ġprintln ( people 2 . map Ġ{ Ġit . name Ġ}) // Ġ[ j ing bin , Ġj in been , Ġh aha ] ĊĠĠĠĠĠĠĠ Ġ// Ġä½¿çĶ¨ Ġ æĪĲåĳĺ å¼ķçĶ¨ Ġ éĩį åĨĻ ĊĠĠĠĠĠĠĠ Ġprintln ( people 2 . map ( Person :: name )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ æīĵåį° åĩº å¹´ é¾ Ħ è¶ħè¿ĩ 3 0 å² ģ äººçļĦ åĲįåŃĹ ĊĠĠĠĠĠĠĠ Ġprintln ( people 2 . filter Ġ{ Ġit . age Ġ> Ġ 2 0 Ġ}. map ( Person :: name )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠåĪĨ ç»Ħ ä¸Ń æīĢæľī å¹´ é¾ Ħ æľĢå¤§ çļĦäºº çļĦ åĲįåŃĹ Ġï¼Ī éĽĨåĲĪ ä¸Ń æľī 1 0 0 ä¸ªäºº å°±ä¼ļ æī§è¡Į 1 0 0 éģį ï¼ī ĊĠĠĠĠĠĠĠ Ġprintln ( people 2 . filter Ġ{ Ġit . age Ġ== Ġpeople 2 . max By ( Person :: age )?. age Ġ}) // Ġ[ Person ( name = jin been , Ġage = 2 3 ), ĠPerson ( name = h aha , Ġage = 2 3 )] ĊĠĠĠĠĠĠĠ Ġ// Ġåıª è®¡ç®Ĺ ä¸Ģæ¬¡ æľĢå¤§ å¹´ é¾ Ħ ĊĠĠĠĠĠĠĠ Ġval Ġmax Age Ġ= Ġpeople 2 . max By ( Person :: age )?. age ĊĠĠĠĠĠĠĠ Ġprintln ( people 2 . filter Ġ{ Ġit . age Ġ== Ġmax Age Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ æ³¨æĦı ä¸įè¦ģ éĩįå¤į è®¡ç®Ĺ ï¼ģ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap Of ( 0 Ġto Ġ" zero ", Ġ 1 Ġto Ġ" one ") ĊĠĠĠĠĠĠĠ Ġprintln ( map . map Values Ġ{ Ġit . value . toUpperCase () Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ/** éĶ® åĴĮ åĢ¼ åĪĨåĪ« çĶ± åĲĦ èĩª çļĦ åĩ½æķ° æĿ¥ å¤ĦçĲĨ ãĢĤ filter Keys åĴĮ map Keys è¿ĩæ»¤ åĴĮ åıĺ æį¢ map çļĦ éĶ® ï¼Į èĢĮ åı¦å¤ĸ çļĦ filter Values åĴĮ map Values è¿ĩæ»¤ åĴĮ åıĺ æį¢ å¯¹åºĶ çļĦåĢ¼ */ ĊĊĊĠĠĠĠĠĠĠ Ġ/* --------------- Ġ 5 . 2 . 2 Ġ" all " Ġ" any " Ġ" count " åĴĮ " find " ï¼ļ å¯¹ éĽĨåĲĪ åºĶçĶ¨ åĪ¤æĸŃ å¼ı ------------- */ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġall åĴĮ any Ġæ£Ģ æŁ¥ éĽĨåĲĪ ä¸ŃçļĦ æīĢæľī åħĥç´ł æĺ¯åĲ¦ éĥ½ ç¬¦åĲĪ æŁĲä¸ª æĿ¡ä»¶ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* Ġcount Ġæ£Ģ æŁ¥ æľī å¤ļå°ĳ åħĥç´ł æ»¡è¶³ åĪ¤æĸŃ å¼ı ĊĠĠĠĠĠĠĠĠ Ġ* Ġfind Ġ Ġè¿ĶåĽŀ ç¬¬ä¸Ģä¸ª ç¬¦åĲĪ æĿ¡ä»¶ çļĦ åħĥç´ł ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 . æ£ĢæŁ¥ ä¸Ģä¸ª äºº æĺ¯åĲ¦ è¿ĺ æ²¡ åĪ° 2 8 å² ģ ĊĠĠĠĠĠĠĠ Ġval Ġcan Be In Club 2 7 Ġ= Ġ{ Ġp : ĠPerson Ġ-> Ġp . age Ġ<= Ġ 2 0 Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ 2 . å¦Ĥæŀľ å¯¹ æĺ¯åĲ¦ æīĢæľī åħĥç´ł éĥ½ æ»¡è¶³ åĪ¤æĸŃ å¼ı ï¼Į åºĶ ä½¿çĶ¨ all åĩ½æķ° ĊĠĠĠĠĠĠĠ Ġval Ġpeople 3 Ġ= ĠlistOf ( Person (" j ing bin ", Ġ 1 1 ), ĠPerson (" jin been ", Ġ 2 2 )) ĊĠĠĠĠĠĠĠ Ġprintln ( people 3 . all ( can Be In Club 2 7 )) // Ġfalse ĊĠĠĠĠĠĠĠ Ġ// Ġ 3 . æ£ĢæŁ¥ éĽĨåĲĪ ä¸Ń æĺ¯åĲ¦ èĩ³ å°ĳ åŃĺåľ¨ ä¸Ģä¸ª åĮ¹éħį åħĥç´ł ï¼Į éĤ£ å°± çĶ¨ any ĊĠĠĠĠĠĠĠ Ġprintln ( people 3 . any ( can Be In Club 2 7 )) // Ġtrue ĊĠĠĠĠĠĠĠ Ġ// Ġ 4 . ! all ãĢĲ ä¸įæĺ¯ æīĢæľī ãĢĳ åı¯ä»¥ çĶ¨ any åĬł ä¸Ĭ è¿Ļä¸ª æĿ¡ä»¶ çļĦ åıĸ åıį æĿ¥ æĽ¿æį¢ ãĢĤ æľĢ å¥½ ä½¿çĶ¨ any + æĿ¡ä»¶ åıĸ åıį ĊĠĠĠĠĠĠĠ Ġval ĠlistOf Ġ= ĠlistOf ( 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġ// Ġä¸į åħ¨éĥ¨ == 3 ĊĠĠĠĠĠĠĠ Ġprintln (! listOf . all Ġ{ Ġit Ġ== Ġ 3 Ġ}) ĊĠĠĠĠĠĠĠ Ġ// Ġ æľīä¸Ģä¸ª != 3 ĊĠĠĠĠĠĠĠ Ġprintln ( listOf . any Ġ{ Ġit Ġ!= Ġ 3 Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Ġcount Ġæľī å¤ļå°ĳ ä¸ª åħĥç´ł æ»¡è¶³ äºĨ åĪ¤æĸŃ å¼ı ĊĠĠĠĠĠĠĠ Ġval Ġpeople 4 Ġ= ĠlistOf ( Person (" j ing bin ", Ġ 1 1 ), ĠPerson (" jin been ", Ġ 2 2 )) ĊĠĠĠĠĠĠĠ Ġprintln ( people 4 . count ( can Be In Club 2 7 )) // Ġ 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ æ³¨æĦı æŃ£ç¡® çļĦ ä½¿çĶ¨ åĩ½æķ° ï¼ģ count ĠåĴĮ Ġsize ï¼Į ä»¥ä¸ĭ ä¼ļ åĪĽå»ºä¸Ģä¸ª ä¸į å¿ħè¦ģ çļĦ ä¸ŃéĹ´ éĽĨåĲĪ ï¼ģ åºĶ ä½¿çĶ¨ count ï¼ģ ĊĠĠĠĠĠĠĠ Ġprintln ( people 4 . filter ( can Be In Club 2 7 ). size ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġfind Ġ æī¾åĪ° ç¬¬ä¸Ģä¸ª æ»¡è¶³ åĪ¤æĸŃ å¼ı çļĦ åħĥç´ł ï¼Į å¦Ĥæŀľ æ²¡æľī æī¾åĪ° å°± è¿ĶåĽŀ null ĊĠĠĠĠĠĠĠ Ġval Ġpeople 5 Ġ= ĠlistOf ( Person (" j ing bin ", Ġ 1 1 ), ĠPerson (" jin been ", Ġ 1 5 )) ĊĠĠĠĠĠĠĠ Ġprintln ( people 5 . find ( can Be In Club 2 7 )) // ĠPerson ( name = j ing bin , Ġage = 1 1 ) ĊĠĠĠĠĠĠĠ Ġprintln ( people 5 . first OrNull ( can Be In Club 2 7 )) Ġ// ĠPerson ( name = j ing bin , Ġage = 1 1 ) ĊĊĊĠĠĠĠĠĠĠ Ġ/* --------------- Ġ 5 . 2 . 3 Ġgroup By : ĠæĬ Ĭ åĪĹè¡¨ è½¬æį¢ æĪĲ åĪĨ ç»Ħ çļĦ map ------------- */ ĊĠĠĠĠĠĠĠ Ġ// Ġå°Ĩ çĽ¸åĲĮ å¹´ é¾ Ħ çļĦäºº æĶ¾åľ¨ ä¸Ģ ç»Ħ ĊĠĠĠĠĠĠĠ Ġval Ġpeople 6 Ġ= ĠlistOf ( Person (" j ing bin ", Ġ 1 1 ), ĠPerson (" jin been ", Ġ 1 5 ), ĠPerson (" h aha ", Ġ 1 5 )) ĊĠĠĠĠĠĠĠ Ġprintln ( people 6 . groupBy Ġ{ Ġit . age Ġ== Ġ 1 5 Ġ}) // Ġ{ false =[ Person ( name = j ing bin , Ġage = 1 1 )], Ġtrue =[ Person ( name = jin been , Ġage = 1 5 ), ĠPerson ( name = h aha , Ġage = 1 5 )] } ĊĠĠĠĠĠĠĠ Ġprintln ( people 6 . groupBy Ġ{ Ġit . age Ġ}) // Ġ{ 1 1 =[ Person ( name = j ing bin , Ġage = 1 1 )], Ġ 1 5 =[ Person ( name = jin been , Ġage = 1 5 ), ĠPerson ( name = h aha , Ġage = 1 5 )] } ĊĊĠĠĠĠĠĠĠ Ġ// Ġä½¿çĶ¨ æĪĲåĳĺ å¼ķçĶ¨ æĬĬ åŃĹç¬¦ä¸² æĮīçħ§ é¦ĸ åŃĹ æ¯į åĪĨ ç»Ħ ï¼ļ ĊĠĠĠĠĠĠĠ Ġval ĠlistOf 1 Ġ= ĠlistOf (" a ", Ġ" b ", Ġ" c ", Ġ" cd ") ĊĠĠĠĠĠĠĠ Ġ// Ġ æ³¨æĦı ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 ãĢģ æĪĲåĳĺ å¼ķçĶ¨ åľ¨ () éĩĮ ï¼Į ä¸į åľ¨ {} éĩĮ ĊĠĠĠĠĠĠĠ Ġ// Ġ 2 ãĢģ è¿ĻéĩĮ first å¹¶ ä¸įæĺ¯ String ç±»çļĦ æĪĲåĳĺ ï¼Į èĢĮ æĺ¯ä¸Ģä¸ª æī©å±ķ ï¼Į åı¯ä»¥ æĬĬ å®ĥ å½ĵ åģļ æĪĲåĳĺ å¼ķçĶ¨ è®¿éĹ® ĊĠĠĠĠĠĠĠ Ġprintln ( listOf 1 . groupBy ( String :: first )) Ġ// Ġ{ a =[ a ], Ġb =[ b ], Ġc =[ c , Ġcd ]} ĊĊĠĠĠĠĠĠĠ Ġ/* --------------- Ġ 5 . 2 . 4 Ġflat Map ĠåĴĮ Ġflatten ï¼ļ å¤ĦçĲĨ åµ Į å¥Ĺ éĽĨåĲĪ ä¸ŃçļĦ åħĥç´ł ------------- */ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠBook ( val Ġtitle : ĠString , Ġval Ġauthors : ĠList < String >) ĊĊĠĠĠĠĠĠĠ Ġval Ġbooks Ġ= ĠlistOf ( Book (" ä¸ī ä½ĵ ", ĠlistOf (" åĪ ĺ æħ Ī æ¬ £ ", Ġ" åĪ ĺ å¾· åįİ ")), ĠBook (" æĪĳçļĦ ä¸ĸçķĮ ", ĠlistOf (" åĪ ĺ æħ Ī æ¬ £ ", Ġ" éŁ © å¯ Ĵ "))) ĊĠĠĠĠĠĠĠ Ġ// Ġ ç»Łè®¡ åĽ¾ ä¹¦ é¦ Ĩ ä¸ŃçļĦ æīĢæľī ä½ľèĢħ çļĦ set ĊĠĠĠĠĠĠĠ Ġ// Ġæ¯ı æľ¬ ä¹¦ éĥ½ åı¯èĥ½ æľī å¤ļä¸ª ä½ľèĢħ ï¼Į å±ŀæĢ§ book . authors åŃĺåĤ¨ äºĨ æ¯ı æľ¬ ä¹¦ ç± į çļĦ ä½ľèĢħ éĽĨåĲĪ ãĢĤ flatMap åĩ½æķ° æĬĬ æīĢæľī ä¹¦ ç± į çļĦ ä½ľèĢħ åĲĪå¹¶ æĪĲ äºĨä¸Ģä¸ª æī ģ å¹³ çļĦ åĪĹè¡¨ ãĢĤ ĊĠĠĠĠĠĠĠ Ġ// Ġto Set è°ĥ åĬ¨ ç§»éĻ¤ äºĨ éĽĨåĲĪ ä¸Ń æīĢæľī éĩįå¤į çļĦ åħĥç´ł ĊĠĠĠĠĠĠĠ Ġprintln ( books . flatMap Ġ{ Ġit . authors Ġ}. toSet ()) // Ġ[ åĪ ĺ æħ Ī æ¬ £ , Ġ åĪ ĺ å¾· åįİ , Ġ éŁ © å¯ Ĵ ] ĊĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ ä¸įéľĢè¦ģ ä»»ä½ķ åıĺ æį¢ ï¼Į åıªæĺ¯ å¹³ éĵ º ä¸Ģä¸ª éĽĨåĲĪ Ġä½¿çĶ¨ flatten ĊĊĠĠĠĠĠĠĠ Ġ/** flatMap åģļ äºĨ ä¸¤ ä»¶ äºĭ ï¼ļ é¦ĸé¡µ æł¹ æł¹æį® ä½ľä¸º å®ŀ åıĤ ç»Ļ å®ļçļĦ åĩ½æķ° å¯¹ éĽĨåĲĪ ä¸ŃçļĦ æ¯ıä¸ª åħĥç´ł åģļ åıĺ æį¢ ( æĪĸèĢħ è¯´ æĺłå°Ħ )ï¼Į çĦ¶åĲİ æĬĬ å¤ļä¸ª åĪĹè¡¨ åĲĪå¹¶ ( æĪĸèĢħ è¯´ å¹³ éĵ º ) æĪĲ ä¸Ģä¸ª åĪĹè¡¨ ãĢĤ */ ĊĠĠĠĠĠĠĠ Ġval ĠlistOf 2 Ġ= ĠlistOf (" abc ", Ġ" def ") ĊĠĠĠĠĠĠĠ Ġprintln ( listOf 2 . flatMap Ġ{ Ġit . toList () Ġ}) // Ġ[ a , Ġb , Ġc , Ġd , Ġe , Ġf ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠĠĠ Ġdata Ġclass ĠBook ( val Ġtitle : ĠString , Ġval Ġauthors : ĠList < String >) ĊĠĠĠ Ġdata Ġclass ĠPerson ( val Ġname : ĠString , Ġval Ġage : ĠInt ) ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġstart ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . set Class ( context , ĠLambda 2 Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }