【オンライン】 JJUGナイトセミナー「コレクションフレームワーク特集」1/30(月) 開催 https://jjug.doorkeeper.jp/events/149811
-JTU͔͠Εͳ͍++6(φΠτηϛφʔʮίϨΫγϣϯϑϨʔϜϫʔΫಛूʯ5
View Slide
ࠓͷ話 気 ……
ίϨΫγϣϯͱ
ίϨΫγϣϯͱίϨΫγϣϯʢࡶʣίϨΫγϣϯʢͱΓ͋͑ͣʣίϨΫγϣϯʢͪΌΜͱʣͦͷଞͷίϨΫγϣϯίϨΫγϣϯͱྻ
ίϨΫγϣϯͱʢࡶʣ
ࡶͳίϨΫγϣϯཁૉΛෳ·ͱΊͯѻ͏ͷෳʹOೖΕɺ͔ͨ·Γɺଋɺίϯςφɺू߹ɺɺɺ
ίϨΫγϣϯͷؒ$PMMFDUJPOT'SBNFXPSLʢࠓճʣྻ0QUJPOBM4USFBNଞͷίϨΫγϣϯ覚
ίϨΫγϣϯʢͱΓ͋͑ͣʣ
ͱΓ͋͑ͣ-JTU͍͍ͩͨ͜ΕͰࣄΓΔ.BQΩʔͰҰຊΓ͍ͨ͠ͱ͖ʹ
લఏΠϯλϑΣʔεͱ࣮ΫϥείϨΫγϣϯجຊతʹΠϯλϑΣʔεͰѻ͍·͢ɻ࣮ΫϥεΠϯελϯεੜ࣌ͳͲಛผͳ߹͚ͩɻͰͱΓ͍͍͋͑ͣɻ
-JTUͱΓ͋͑ͣ͑ΔΠϯελϯε͕࡞ΕΔཁૉΛՃͰ͖ΔϧʔϓͰ͖Δ
-JTUͱΓ͋͑ͣ͑ΔList完全
શʹϚελʔͨ͠ʮͱΓ͋͑ͣ͑Δʯ͜ΕΛͪΌΜͱͰ͖Ε͍͍ɻͱΓ͋͑ͣ"SSBZ-JTUͱΓ͋͑ͣδΣωϦΫεॻ͍ͱ͘BEEGPSFBDIϧʔϓ
ͪΌΜͱ͑ͯͳ͍ྫ
.BQͱΓ͋͑ͣ͑ΔΠϯελϯε͕࡞ΕΔཁૉΛՃͰ͖ΔཁૉΛऔΓग़ͤΔ
.BQͱΓ͋͑ͣ͑Δ
શʹϚελʔͨ͠ʮͱΓ͋͑ͣ͑Δʯ͜ΕΛͪΌΜͱͰ͖Ε͍͍ɻ)BTI.BQLFZ)BTI.BQͰѻ͑ΔͷͱΓ͋͑ͣ4USJOHͰ͍͍ɻ͋ͱͰΘ͔Δ
ͱΓ͋͑ͣίϨΫγϣϯ͑Δͬͯݴ͍͍ͬͯɻ͜ΕͰۀॲཧॻ͚ͳ͘ͳ͍ɻΑ͘Θ͔ΒΜͷग़͖ͯͨΒʮͱΓ͋͑ͣʯͷ࣍ʹਐΈ·͠ΐ͏ɻ͍͖ͳΓίϨΫγϣϯશΫϥεͱ͔શϝιουͷ͍ํͱ͔֮͑ͳ͍͍ͯ͘Αɺ΄Μͱʹɻ
ͱΓ͋͑ͣʹ͚ম͖ਕଘࡏνΣοΫDPOUBJOTআSFNPWF͜Ε͘Β͍ͰʮͰ͖ͳ͍ॲཧʯͦ͏ͳ͍ͱࢥ͏ޮѱ͍ͱ͔อकੑѱ͍ͱ͔μα͍ͱ͔͋Δ͚Ͳɺͦ͜Εํͳ͍
ίϨΫγϣϯʢͪΌΜͱʣJava SE 話
$PMMFDUJPOT'SBNFXPSLίϨΫγϣϯͷϑϨʔϜϫʔΫ+BWBͰಋೖ͞ΕͨͷʢલʣʜʜಋೖͩͱࢥͬͯͨΑɻϓϩδΣΫτͬͯͨ࣌7FDUPSͱ͔ग़͖͔ͯͨΒɻ
$PMMFDUJPOT'SBNFXPSLΠϯλϑΣʔεͱ࣮Λ͚Δͷ͕ྲྀߦ͍ͬͯͨ࣌ࠓ͑ͯΔͷ͜Εͷ͓͔͛ײ͋ΔϚγϯεϖοΫ͕ශऑͳ࣌Α͘Ͱ͖ͯΔʢਖ਼ʣ
$PMMFDUJPOT'SBNFXPSLͷΠϯλϑΣʔεͨͪ覚
ΫϥεೖΕΔͱΧΦεʹͳΔ知
ͬ͠ͱ͚ -JTU .BQ$PNQBSBCMF$PNQBSBUPS 4FU 4PSUFE4FU 4PSUFE.BQ൪֎ $PMMFDUJPO ΄͔各層 中 話
ίϨΫγϣϯͪΌΜͱ͑ΔͬͯͳΜΑʁͱͳΓ·͢ɻͳͷͰͪΌΜͱΛϨϕϧʹ͚ͯΈΔɻ
ͪΌΜͱΠϯλϑΣʔεΛબͰ͖Δ࣮ΛબͰ͖ΔඇίϨΫγϣϯͱมͰ͖Δʢ͜·͝·ͨࣝ͠κʔϯʣίϨΫγϣϯΛ࣮Ͱ͖Δ#FUUFSίϨΫγϣϯΛ࡞ΕΔ=====超 壁=====
ଞͷίϨΫγϣϯ
ଞͷίϨΫγϣϯʁ$PMMFDUJPOT'SBNFXPSLҎ֎ʹίϨΫγϣϯଘࡏ͠·͢ɻΓͳ͍ྖҬͰಠࣗͷίϨΫγϣϯ͕ΘΕΔ͜ͱ͋Γ·͢ɻนΛඈͼӽ͑ͨਓ͕ͨͪͬͯ·͢ɻ
ίϨΫγϣϯ$PMMFDUJPOT'SBNFXPSL+BWB4&Ͱఏڙ͞Ε·͕͢ɺݴޠతʹಛผѻ͍͞Ε͍ͯΔͷ*UFSBCMF͘Β͍Ͱ͢ɻ
*UFSBCMFͷಛผѻ͍
ͱ͍͑GPSFBDIϧʔϓ࠷ۙʢ+BWB݄ɺͭ·ΓલʜʜʣGPS&BDIϝιου͕ੜ͑ͯ-BNCEBͤΔΑ͏ʹͳͬͨΓͯ͠ΔͷͰɺGPSFBDIϧʔϓͦ͜·ͰརͰͳ͍Ͱ͢ɻ
ଞͷίϨΫγϣϯ̎छྨίϨΫγϣϯͷΠϯλϑΣʔεҰ෦ΫϥεΛͬͯɺΑΓతʹ߹ͬͨίϨΫγϣϯ࣮ΠϯλϑΣʔε͔Βؙ͝ͱ࠶ઃܭ͞Εͨ$PMMFDUJPOT'SBNFXPSLͱޓੑͷͳ͍#FUUFSίϨΫγϣϯ
ίϨΫγϣϯ࣮+BWBඪ४ϥΠϒϥϦʹࢄݟ͞ΕΔɻγʔϜϨεʹସͰ͖ɺతʹ߹͍ͬͯͨΒྗΛൃش͢ΔɻΠϯλϑΣʔε͑͞߹ͬͯΕ͍͍ͷͰɺ3%#ʹଓ͢ΔίϨΫγϣϯͱ͔࡞ΕΔɻ͍ʹͳΔ͔ΒΜɻ
#FUUFSίϨΫγϣϯ$PMMFDUJPOT'SBNFXPSLͷܕ֊ૢ࡞ʹҟΛএ͑Δಠࣗ࿏ઢɻੑೳ"1*ͷ͍উख༏Δͷͷɺඪ४ͱ֎ΕΔ͕Ώ͑ʹଞͷϥΠϒϥϦͱͷΓͱΓͷ෦Ͱଟগటष͘ͳΔɻͰศརͰ҆શͰޮ͍͍ɻ
ίϨΫγϣϯͷૢ࡞
Γ͍ͨૢ࡞Ճআஔநग़ׂूܭҙͷॲཧมଞ͋Δ͔
ίϨΫγϣϯૢ࡞ҰݸͣͭऔΓग़ͯ͠ΕͱΓ͋͑ͣͳΜͱ͔ͳΔੑೳ͕ڐͤɻ࣮ྔ͕ڐͤɻίʔυ͕ଟ͍ͱ୯७ʹ໘ͩ͠ɺίʔυ͕ଟ͍͚ͩόάΓ͍͢ɻ
࣍Ͱ😉
ίϨΫγϣϯΘ͔Δ
Θ͔Δ͍Ζ͍ΖΫϥεϝιουΛ҉ه͍ͯͯ͠Θ͔Δͱ͍͑·ͤΜɻ
$PMMFDUJPOT'SBNFXPSLͷΠϯλϑΣʔεͨͪ覚再掲
ΫϥεೖΕΔͱΧΦεʹͳΔ知再掲
KBWBVUJM͚ͩݟͯList実装Map実装
Θ͔Δ͍Ζ͍Ζ֮ͦͦ͑ΔͷແཧΑͶ
ͳͷͰ͝ͱʹʮ͜ΕΘ͔Δʯͱݴ͑ͦ͏ͳΛ͠·͢
-JTUॱংͷ͋ΔίϨΫγϣϯͰ͢ɻॱং͕͋ΔͷͰೖΕͨॱ͕ҡ࣋͞ΕΔฒͼସ͕͑Ͱ͖ΔฒͼॱΛѻ͑Δඞཁ͕͋Δ
-JTUͷมߋՄೳੑ-JTUPG"SSBZTBT-JTUͰ࡞ͬͨΓɺ$PMMFDUJPOTVONPEJfiBCMF-JTUΛ௨ͨ͠-JTUมߋͰ͖ͳ͍ɻมߋͰ͖ͳ͍-JTUʹมߋૢ࡞Λߦ͏ͱ6OTVQQPSUFE0QFSBUJPO&YDFQUJPO͕ൃੜ͢Δɻ࣮ߦ࣌ྫ֎ͭΒ͍ɻ-JTUʹݶΒͳ͍͚ΕͲίϨΫγϣϯશൠ๊͕͑Δɺݹ͔͘ΒΑ͘ΒΕͨڍಈɻมߋෆՄΛલఏʹ͢Δͷ͕ྑ͍ɻ
-JTUͷ࣮બKBWBVUJM"SSBZ-JTU-JTUPG &ੜ͢Δͱ͖͜ͷ̎ɻଞ͋Δ͚Ͳ͋·Γؾʹ͠ͳ͍͍ͯ͘Ͱ͢ɻ
"SSBZ-JTUͱ-JOLFE-JTU΄ͱΜͲ"SSBZ-JTUͰ͍͍-JOLFE-JTUͷํ͕దΆ͍໘Ͱ"SSBZ-JTUͷํ͕ੑೳͰͨΓͯ͠͠·͏͜ͱ͠͠"SSBZ-JTU͕͍͞Εͨ݁Ռͱ͔ͳΜͱ͔
.BQΩʔͰѻ͏࣌ʹ͍·͢ɻΩʔಉੑʢFRVBMTIBTI$PEFʣ͕దʹ࣮͞Ε͍ͯΔඞཁ͕͋Γ·͢ɻFRVBMTIBTI$PEF.BQͷͨΊʹ͋ΔͱݴͬͯաݴͰͳ͍ɻաݴͩͬͨɻͰίϨΫγϣϯͷͨΊʹ͋ΔͱݴͬͯաݴͰͳ͍ؾ͠ͳ͍Ͱͳ͍ɻ
.BQͷࠪ$PMMFDUJPOͰͳ͍ͭ·Γ*UFSBCMF͕࣮͞Ε͍ͯͳ͍FOUSZ4FU Ͱ4FU&OUSZʹ͔ͯ͠ΒͿΜ·Θ͢ɻLFZ4FU WBMVFT ͋Δ͚ͲɺѹతʹFOUSZ4FU ͷग़൪͕ଟ͍ɻ
ฒͼॱൺֱ͢ΔͨΊͷ$PNQBSBCMF͕࣮͞ΕͨΫϥε͕ཁૉͳΒͦͷॱͰฒΒΕΔฒͼସ͕͑ࣗ༝ʹͰ͖ΔͱΘ͔ͬͯΔײ͋Δ
ฒͼॱฒͼସ͑Δ࣌ʹ༩͑Δɻ
$PNQBSBUPS$PNQBSBUPSͷϑΝΫτϦϝιουʢDPNQBSJOHͱ͔ʣͰ࡞Δɻ$PNQBSBUPSΠϯλϑΣʔεΛ࣮͠ͳ͍ɻ
$PNQBSBUPS-JTU-JTUΛιʔτ͢Δͱ͖ʹTPSUϝιουʹ$PNQBSBUPSΛ͚͢ΕͲɺ-JTU͕มߋՄೳ-JTU͔Ͳ͏͔Ͱ࣮ߦ࣌ΤϥʔʹͳΔɻ࠷ۙ͋·Γ͠ͳ͍ɻ4USFBNͰTPSUͯ͠UP-JTUͪ͠Ό͏ɻ
4FUॏෳ͠ͳ͍ίϨΫγϣϯͰ͢ɻॏෳ͢Δ͔Ͳ͏͔ಉੑʹ͞Ε·͢ɻಉੑ࣌ؒ࣍ୈͰ͋ͱͰɻجຊతʹॱংͳ͍Ͱ͢ɻ͋Δ͚ͲΞςʹͨ͠Βμϝɻ
4PSUFE4FU4PSUFE.BQͱݴ͑ʮ4FU͍͍͚ͨͲॱংʔʯͱ͔ݴ͍ग़͢͜ͱଟ͍Ͱ͢ɻΘ͕··ɻͳͷͰηοτͰ4PSUFE4FU͓͖͑ͯ·͠ΐ͏ɻ͍ͭͰʹ4PSUFE.BQɻ
൪֎$PMMFDUJPO$PMMFDUJPO͕ग़ͯ͘Δ͜ͱ໓ଟʹͳ͍Ͱ͢ɻ
"SSBZ-JTU͡Όͳ͘-JTUΛ͏
ͦͷઌίϨΫγϣϯ͕બΔ
൚༻࣮ͷબࢶ覚 ( 「⼊⾨」)
ͨͩ͠ੑೳ໘͔ΒదͳίϨΫγϣϯΛબΜͩͭΓͰɺ࠷ۙͷίϯϐϡʔλʔϦιʔεͩͱޡࠩʹऩ·ͬͨΓ͠·͢ɻίϨΫγϣϯͰؤுͬͨΓ͢Δ·͑ʹɺઃܭ4USFBNɺαʔυύʔςΟʔͷ#FUUFSίϨΫγϣϯͰରॲ͢Δ΄͏͕ྑ͍ײ͡͠·͢ɻ
༩ଠ⽂句
͑ͳ͍ϝιου͕͋Δ6OTVQQPSUFE0QFSBUJPO&YDFQUJPO͕ى͜Δɻ࣮ߦ࣌ྫ֎ͭΒ͍ɻ͜ΕKBWBMBOHύοέʔδͷͤ͘ʹ$PMMFDUJPOT'SBNFXPSLͷϝϯόʔͳΜͰ͢ΑͶɻଞͰΘΕͯΔ͚Ͳɻ
OVMMͷѻ͍͕·ͪ·ͪOVMM͕ೖΔίϨΫγϣϯͩͬͨΓɺೖΒͳ͍ίϨΫγϣϯͩͬͨΓɺ·ͪ·ͪɻOVMM͕ೖΒͳ͍ίϨΫγϣϯʹOVMMೖΕΔͱ࣮ߦ࣌ྫ֎ͭΒ͍ɻ+BWBEPDʹॻ͍ͯΔ͚Ͳಡ·ͳ͍ʢࣗനʣςετͰؾ͔ͮ͘Β͍͍͔ͳͬͯʜʜ
ΓΈͯ͌ͿJOUͱ͔CPPMFBOͱݴͬͨϓϦϛςΟϒʢ·ͩʣίϨΫγϣϯͰѻ͑ͳ͍ɻԼखʹΔͱϘΫγϯάʗΞϯϘΫγϯά͕සൃ͢Δɻ͚ͲϚγϯύϫʔ্͕ͬͯผʹʹͳΒͳ͍ͷඍົʹ໘ͳͱ͜Ζɻ
IBTI$PEFFRVBMTίϨΫγϣϯͰཁૉಉ࢜Λൺֱ͢Δ͜ͱଟ͍ɻͳͷͰ͜ΕΒΛѻ͑ͳ͍ͱʮίϨΫγϣϯ͑ΔʯʹͳΒͳ͍ɻ͜ͷ࣍ʹ$PNQBSBCMF͕ग़ͯ͘Δɻ
ಓIBTI$PEFIBTI$PEF͕Ұக͍ͯͯ͠ΠίʔϧͰͳ͍ʢશવҧ͏ͷͰඃ͍͍ͬͯʣIBTI$PEF͕ҧͬͨΒඞͣҧ͏ʹ͠ͳ͖Ό͍͚ͳ͍
͍ͨͩ͠IBTI$PEFͷ࣮役 ⽴
IBTI$PEFFRVBMTͷ࣮͖ͯͱ͏ʹ͠Β͍ͯͩ͘͞ɻ*%&ʹ࡞ΒͤΔͰ͍͍͠ɺSFDPSEʹཔΔͰ͍͍͠ɻ
ίϨΫγϣϯͱγϦΞϥΠζ
γϦΞϥΠζ࣮Ͱ΄ͱΜͲҙࣝ͞Εͳ͍Ͱ͋Ζ͏4FSJBMJ[BCMFͷɻΒͳ͍͍ͯ͘Μ͚ͩͲɺΒͳ͍ͳΒΘͳ͍͜ͱɻ͏ͳΒ͓͔ͬͯͳ͖Ό͍͚ͳ͍ɻ
4FSJBMJ[BCMFੲҰੲલηογϣϯϨϓϦέʔγϣϯͱ͔ͰඞཁͩͬͨΓͰඞ͚ͣͭ·͠ΐ͏ͱ͔ͳͬͯͨΜ͚ͩͲɺࠓΦϒδΣΫτΛγϦΞϥΠζ͢Δํ๏͕͜ΕʹݶΒͳ͘ͳͬͯΔͷͰग़൪ݮͬͯΔɻηογϣϯϨϓϦέʔγϣϯͰSFEJTͱ͔ͷ֎෦ετϨʔδ͏ͳΒ͚ͦͬͪͷγϦΞϥΠζΛ͢Ε͍͍ͷͰɻͨͱ͑+40/ʹॻ͖ग़͢ͳΒ4FSJBMJ[BCMFཁΒͳ͍ɻ
4FSJBMJ[BCMFੲTFSJBM7FSTJPO6*%ͱ͍͏ͷʮܯࠂͰΔ͔Βͬͱ͜͏ʯ͘Β͍Ͱ࡞ΒΕͯͨΓ͢ΔɻͦΕͳΒ࡞Βͳ͍ํ͕ϚγͳΜ͚ͩͲͳ͊ʜʜͱԣͰݟͯΔɻ࣮ͳ͍ͷͰ͠͠εϧʔͪ͠Ό͏ɻ͜ͷΛ࢝ΊΔͱऴΘΒͳ͍ͷͰলུɻ
ίϨΫγϣϯͱγϦΞϥΠζ-JTU4FSJBMJ[BCMFͰͳ͍$PMMFDUJPOT'SBNFXPSLͷΠϯλϑΣʔεશ෦4FSJBMJ[BCMFͰͳ͍"SSBZ-JTU4FSJBMJ[BCMFͰ͋Δ
ͨͱ͑͜͏͍͏࣮NG 。保証 。
)BTI4FUͷத
)BTI4FUͷதॏෳΛͳ͍ͨ͘͠ͱ͖ʹΑ͘ΘΕΔ)BTI4FUɺ)BTI.BQͱࣅ͍ͯΔ͚ΕͲɺ)BTI.BQ͕ΩʔͱͷϖΞͰ͋Δͷʹରͯ͠)BTI4FUཁૉ͚ͩΛѻ͏ͷͰγϯϓϧͩͱࢥ͏͔͠Εͳ͍ɻ
KBWBVUJM)BTI4FU
KBWBVUJM)BTI4FU👈中⾝HashMap
ੲͷࢠͨͪ
ग़͖ͯͨΒʮ͋ɺੲͷʜʜʯͱԹ͔͍Ͱݟ͍ͯ͋͛ͯͩ͘͞「昔」 ⾔ 側 24年前問題
ίϨΫγϣϯͷެࣜυΩϡϝϯτ
ެࣜυΩϡϝϯτ存在知 辿 着 問題
ͨͲΓ͖͔ͭͨ
όʔδϣϯ̓ 分布差 込出典 感覚
όʔδϣϯ̓ 実際⾒ 現場 割合
👇
👉
👈
読 物 ⾯⽩