æ³å®ãããã Java SEã®å€ãã®æ©èœã«ç²ŸéããŠãããããåºæ¬çã«ç°¡åã«æ å ±ãæäŸããŸãã ãã¡ãããJava SEãã©ãããã©ãŒã ã®åºæ¬ãæããããã ãã«ãã®èšäºã䜿çšã§ããŸãïŒãã ãããã®å Žåãèšäºãèªãã åŸã¯ãä»ã®ãœãŒã¹ã«ç®ãåããå¿ èŠããããŸãïŒã
ã§ããããé¢æ¥åã«ç¥ã£ãŠããããšããã¹ãŠèŠããããšããŠããã®ã§ããäœå¹Žã®çµéšã§ãæ§ããŸãããæºåãã§ããŠããªããŠããèŠããŠããããã«æããã質åã«çããããšãã§ããŸãããé¢æ¥äžã«å¿ããããŸããã ãã®ããŒãã·ãŒãã䜿çšãããšãç¥èã®äžéšãæŽæ°ã§ããŸãã
泚æ ïŒJavaèšèªèªäœã«é¢ãã質åã«ã¯è§ŠããŸããïŒfinalãšããèšèã®ç®çããŸãã¯ãªãŒããŒã©ã€ããšãªãŒããŒããŒãã®éãã®ããã§ãïŒãããã«ã¯å¥ã®èšäºãå¿ èŠã«ãªããŸãããããã¯Java SEïŒ6-9ïŒãã©ãããã©ãŒã ã«é¢ãã質åã§ãã
I.ã³ã¬ã¯ã·ã§ã³
ããªãã®ã¬ãã«ã«é¢ä¿ãªããã³ã¬ã¯ã·ã§ã³ã«é¢ãã質åã¯åžžã«ãããããããŸãã ãããã£ãŠãã³ã¬ã¯ã·ã§ã³ã«é¢ãããã¹ãŠã®æ©èœãç°¡åã«æãåºããŸãããã
ã³ã¬ã¯ã·ã§ã³ã«é¢ããå€ãã®æ
å ±
1ïŒJDKã³ã¬ã¯ã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹
2ïŒãã¹ãŠã®ã³ã¬ã¯ã·ã§ã³ã®éåžžã«ç°¡åãªèª¬æãå«ãè¡š
3ïŒJDKã®éæšå¥šã®ã³ã¬ã¯ã·ã§ã³
4ïŒ ãªã¹ãã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããã³ã¬ã¯ã·ã§ã³
5ïŒ Setã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ããã³ã¬ã¯ã·ã§ã³ïŒå€ãïŒ
6ïŒ Mapã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããã³ã¬ã¯ã·ã§ã³ïŒé£æ³é åïŒ
7ïŒ ãã¥ãŒ/ããã¥ãŒã€ã³ã¿ãŒãã§ã€ã¹ ïŒãã¥ãŒïŒã«åºã¥ãã³ã¬ã¯ã·ã§ã³
8ïŒãã®ä»ã®ã³ã¬ã¯ã·ã§ã³
9ïŒã³ã¬ã¯ã·ã§ã³ãæäœããæ¹æ³
10ïŒããŸããŸãªã¿ã€ãã®JDKã³ã¬ã¯ã·ã§ã³ã¯å éšã§ã©ã®ããã«é 眮ãããŸãã
11ïŒæšæºã³ã¬ã¯ã·ã§ã³ã©ã€ãã©ãªã®ä»ã®æçšãªãšã³ãã£ãã£
åå¿è
åãã³ã¬ã¯ã·ã§ã³ããŒã
åå¿è
ã«ãšã£ãŠïŒç¹ã«ä»ã®ããã°ã©ãã³ã°èšèªããåãæ¿ããå ŽåïŒãJavaã³ã¬ã¯ã·ã§ã³ã«ä¿åãããã®ã¯ãªã³ã¯/ãã€ã³ã¿ãŒã®ã¿ã§ããããã以äžã§ã¯ãªãããšãç解ããã®ãéåžžã«é£ããå ŽåããããŸãã addãŸãã¯putãåŒã³åºããšããªããžã§ã¯ãã¯å®éã«ã¯ã³ã¬ã¯ã·ã§ã³å
ã®ã©ããã«æ ŒçŽãããŠããããã§ããããã¯ãããªããã£ãåã§åäœããé
åã«ã®ã¿åœãŠã¯ãŸããŸããããªã³ã¯ã®ã¿ãæ ŒçŽããã³ã¬ã¯ã·ã§ã³ã«ã¯åœãŠã¯ãŸããŸããã ãã®ããããArrayListã³ã¬ã¯ã·ã§ã³ã®æ£ç¢ºãªãµã€ãºã«ååãä»ããããšã¯ã§ããŸããïŒããªã©ã®ã€ã³ã¿ãã¥ãŒã®è³ªåã«å¯ŸããŠãåå¿è
ã¯ãä¿åãããŠãããªããžã§ã¯ãã®ã¿ã€ãã«äŸåããããªã©ã®åçãå§ããŸãã ã³ã¬ã¯ã·ã§ã³ã¯ãªããžã§ã¯ãèªäœãä¿åããããªããžã§ã¯ããžã®ãªã³ã¯ã®ã¿ãä¿åãããããããã¯å®å
šã«ééã£ãŠããŸãã ããšãã°ããªã¹ãã«åããªããžã§ã¯ãã100äžåè¿œå ã§ããŸãïŒããæ£ç¢ºã«ã¯ã1ã€ã®ãªããžã§ã¯ãã«100äžã®ãªã³ã¯ãäœæããŸãïŒã
1ïŒJDKã³ã¬ã¯ã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹
JDKã³ã¬ã¯ã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹
åéã€ã³ã¿ãŒãã§ãŒã¹
java.util.concurrentããã±ãŒãžã®ã€ã³ã¿ãŒãã§ãŒã¹
java.util.concurrentã®ã€ã³ã¿ãŒãã§ãŒã¹ããã³ã³ã¬ã¯ã·ã§ã³ã«é¢ãã詳现æ å ±ã«èå³ãããå Žåã¯ã
ãã¡ãã®èšäºãã芧ãã ãã ã
åœ¹è· | 説æ |
---|---|
å埩å¯èœ | ã³ã¬ã¯ã·ã§ã³ã«ã€ãã¬ãŒã¿ããããforïŒType valueïŒcollectionïŒã§ãã€ãã¹ã§ããããšãæå³ããã€ã³ã¿ãŒãã§ãŒã¹ã ã»ãšãã©ãã¹ãŠã®ã³ã¬ã¯ã·ã§ã³ïŒããããé€ãïŒ
|
åé | ã»ãšãã©ã®ã³ã¬ã¯ã·ã§ã³ã®ã¡ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ïŒããããé€ãïŒ |
äžèŠ§ | ãªã¹ãã¯é åºä»ããããã³ã¬ã¯ã·ã§ã³ã§ãããã·ãŒã±ã³ã¹ãšãåŒã°ããŸãã
ïŒã·ãŒã±ã³ã¹ïŒã ã»ãšãã©ã®å®è£ ã§èŠçŽ ã®éè€ã¯èš±å¯ãããŠããŸãã ã¢ã¯ã»ã¹ãèš±å¯ããŸã èŠçŽ ã€ã³ããã¯ã¹ã ã³ã¬ã¯ã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ãæ¡åŒµããŸãã |
ã»ãã | ã»ããã§ã®äœæ¥ãå®è£
ããã€ã³ã¿ãŒãã§ãŒã¹ïŒæ°åŠã»ããã«é¡äŒŒïŒãè€è£œ
ã¢ã€ãã ã¯çŠæ¢ãããŠããŸãã 泚æããå Žåãšããªãå ŽåããããŸãã ã³ã¬ã¯ã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ãæ¡åŒµããŸãã |
ãã¥ãŒ | ãã¥ãŒã¯ãã³ã¬ã¯ã·ã§ã³ã«å¯Ÿããéåžžã®æäœãšã¯ç°ãªããåŠçåã«ãªããžã§ã¯ããæ ŒçŽããããã«èšèšãããã³ã¬ã¯ã·ã§ã³ã§ã;ãã¥ãŒã¯ãè¿œå ãåä¿¡ã衚瀺ã®ããã®è¿œå ã®ã¡ãœãããæäŸããŸãã ååãšããŠãèŠçŽ ã€ã³ããã¯ã¹ã«ããã¯ã€ãã¯ã¢ã¯ã»ã¹ã«ã¯å«ãŸããŸããã ã³ã¬ã¯ã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ãæ¡åŒµ
|
ãã± | åæ¹åãã¥ãŒã䞡端ããã®èŠçŽ ã®è¿œå ãšåé€ããµããŒãããŸãã å±éãã
ãã¥ãŒã€ã³ã¿ãŒãã§ã€ã¹ã |
å°å³ | ããŒãšå€ã®ãããã³ã°ã§åäœããŸãã åããŒã¯1ã€ã®å€ã«ã®ã¿å¯Ÿå¿ããŸãã ã§
ä»ã®ã³ã¬ã¯ã·ã§ã³ãšã¯ç°ãªããã€ã³ã¿ãŒãã§ã€ã¹ïŒCollectionããã³Iterableãå«ãïŒã¯æ¡åŒµãããŸããã |
ãœãŒãæžã¿ã»ãã | èªåçã«ãœãŒããããã»ããããŸãã¯èªç¶é ïŒè©³çŽ°ã«ã€ããŠã¯ã
æ¯èŒå¯èœãªã€ã³ã¿ãŒãã§ãŒã¹ïŒããŸãã¯Comparatorã䜿çšããŸãã ã»ããã€ã³ã¿ãŒãã§ã€ã¹ãæ¡åŒµ |
ãœãŒãæžã¿ããã | ããã¯ãããŒãçš®é¡ããšãŸãã¯äœ¿çšããŠèªåçã«ãœãŒãããããããã§ã
ã³ã³ãã¬ãŒã¿ Mapã€ã³ã¿ãŒãã§ãŒã¹ãæ¡åŒµããŸãã |
ããã²ãŒã·ã§ã³å¯èœã»ãã
| ããã¯ãæå®ãããæ€çŽ¢å€ã«æãè¿ãå€ãèŠã€ããããã®ã¡ãœãããè¿œå ãããSortedSetã§ãã NavigableSetã«ã¢ã¯ã»ã¹ããŠãã€ãã¹ãŸãã¯é çªã«å®è¡ã§ããŸã
å€ã®éé ãŸãã¯æé ã |
ããå¯èœããã
| ããã¯SortedMapã§ãããç¹å®ã®æ€çŽ¢å€ã«æãè¿ãå€ãèŠã€ããããã®ã¡ãœãããè¿œå ããŸããã éé ãŸãã¯
æé ã |
java.util.concurrentããã±ãŒãžã®ã€ã³ã¿ãŒãã§ãŒã¹
åœ¹è· | 説æ |
---|---|
ããããã³ã°ãã¥ãŒ
| ãã¥ãŒã®ãµã€ãºãæ¡ä»¶ä»ãããã¯ãåä¿¡æã®ããŒã¿ã®è¿œå æãŸãã¯ããŒã¿ã®äžè¶³æã®ãªãŒããŒãããŒãåŠçããããŸããŸãªã¡ãœãããèšå®ããæ©èœãå«ããã«ãã¹ã¬ãããã¥ãŒã®å®è£
ïŒäŸå€ãã¹ããŒãããã¹ã¬ãããæ°žç¶çãŸãã¯äžæçã«ãããã¯ãããfalseãè¿ããªã©ïŒ
|
TransferQueue
| ãã®ãã«ãã¹ã¬ãããã¥ãŒã¯ãåä¿¡ã¹ã¬ãããèŠçŽ ããã¥ãŒãããã«ãããŸã§æ¿å
¥ã¹ã¬ããããããã¯ã§ãããããã¹ã¬ããéã®åæããã³éåæã¡ãã»ãŒãžè»¢éã®å®è£
ã«äœ¿çšã§ããŸãã
|
Blockingdeque
| BlockingQueueã«äŒŒãŠããŸãããåæ¹åãã¥ãŒçšã§ã |
ã³ã³ã«ã¬ã³ãããã
| ã€ã³ã¿ãŒãã§ãŒã¹ãMapã€ã³ã¿ãŒãã§ãŒã¹ãæ¡åŒµããŸãã å€æ°ã®æ°ããã¢ãããã¯ã¡ãœãããè¿œå ããŸãïŒputIfAbsentãremoveãreplaceããã«ãã¹ã¬ããããã°ã©ãã³ã°ãç°¡åãã€å®å
šã«ããŸãã
|
䞊è¡ããã²ãŒã·ã§ã³å¯èœããã
| ãã«ãã¹ã¬ããããŒãžã§ã³çšã«NavigableMapã€ã³ã¿ãŒãã§ãŒã¹ãæ¡åŒµ |
java.util.concurrentã®ã€ã³ã¿ãŒãã§ãŒã¹ããã³ã³ã¬ã¯ã·ã§ã³ã«é¢ãã詳现æ å ±ã«èå³ãããå Žåã¯ã
ãã¡ãã®èšäºãã芧ãã ãã ã
2ïŒãã¹ãŠã®ã³ã¬ã¯ã·ã§ã³ã®éåžžã«ç°¡åãªèª¬æãå«ãè¡š
ãã¹ãŠã®ã³ã¬ã¯ã·ã§ã³ã®éåžžã«ç°¡åãªèª¬æãå«ãè¡š
*-å®éã«ã¯ãBitSetã¯SetãšåŒã°ããŸãããSetã€ã³ã¿ãŒãã§ã€ã¹ã¯ç¶æ¿ããŸããã
çš®é¡ | ã·ã³ã°ã«ã¹ã¬ãã | ãã«ãã¹ã¬ãã |
---|---|---|
ãªã¹ã |
|
|
ãã¥ãŒ/ Deques |
|
|
å°å³
|
|
|
ã»ãã
|
|
|
*-å®éã«ã¯ãBitSetã¯SetãšåŒã°ããŸãããSetã€ã³ã¿ãŒãã§ã€ã¹ã¯ç¶æ¿ããŸããã
3ïŒJDKã®éæšå¥šã®ã³ã¬ã¯ã·ã§ã³
éæšå¥šã®Javaã³ã¬ã¯ã·ã§ã³
å»æ¢ïŒã¬ã¬ã·ãŒïŒãšèŠãªãããæ±çšãŠãããŒãµã«ã³ã¬ã¯ã·ã§ã³
åŸæ¥ã®ã³ã¬ã¯ã·ã§ã³ã«åºã¥ããŠæ§ç¯ãããç¹æ®ãªã³ã¬ã¯ã·ã§ã³
å | 説æ |
---|---|
ããã·ã¥ããŒãã«
| åœåã¯HashMapã®åæã¢ããã°ãšããŠèããããŠããŸãããããŸã å¯èœã§ã¯ãããŸããã§ãã
Collecions.synchronizedMapã䜿çšããŠã³ã¬ã¯ã·ã§ã³ã®ããŒãžã§ã³ãååŸããŸãã çŸæç¹ã§ã¯ãååãšã㊠ConcurrentHashMapã䜿çšããŸãã HashTableã¯åæãããé ããã¹ã¬ããã»ãŒãã§ã¯ãããŸãã HashMapãå®å šãªã¬ãã«ã§ã¯ãªããåã ã®æäœã®ã¬ãã«ã§åæãæäŸããŸãã ã³ã¬ã¯ã·ã§ã³ã |
ãã¯ãã« | 以åã¯ArrayListã®åæããŒãžã§ã³ãšããŠäœ¿çšãããŠããŸãããã次ã®çç±ãšåãçç±ã§å»æ¢ãããŸãã
ããã·ã¥ããŒãã« |
ã¹ã¿ã㯠| 以åã¯ãã¥ãŒã®æ§ç¯ã«äœ¿çšãããŠããŸãããããã¯ã¿ãŒã«åºã¥ããŠæ§ç¯ãããŠããããã
ãŸããé埳çã«æ代é ããšèŠãªãããŸãã |
åŸæ¥ã®ã³ã¬ã¯ã·ã§ã³ã«åºã¥ããŠæ§ç¯ãããç¹æ®ãªã³ã¬ã¯ã·ã§ã³
å | ã«åºã¥ã㊠| 説æ |
---|---|---|
ç©æ§
| ããã·ã¥ããŒãã« | Hashtableã«åºã¥ããŠæ§ç¯ãããããŒã¿æ§é ãšããŠãPropertiesã¯ããªãæ代é
ãã®æ§é ã§ãã
æååãå«ããããã䜿çšããããšããå§ãããŸãã ããããã£ã®è©³çŽ° ãã®è°è«ã§æšèŠãããªã䜿çšãèŠã€ããããšãã§ããŸãã |
UIDefaults
| ããã·ã¥ããŒãã« | Swingã³ã³ããŒãã³ãã®ããã©ã«ãèšå®ãä¿åããã³ã¬ã¯ã·ã§ã³ |
4ïŒ ãªã¹ãã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããã³ã¬ã¯ã·ã§ã³
Listã€ã³ã¿ãŒãã§ãŒã¹ãå®è£
ããã³ã¬ã¯ã·ã§ã³
ãªã¹ããå®è£
ããæ±çšãŠãããŒãµã«ã³ã¬ã¯ã·ã§ã³ïŒ
java.util.concurrentããã±ãŒãžã®ã³ã¬ã¯ã·ã§ã³
ãªã¹ãã«åºã¥ãé«åºŠã«å°éåãããã³ã¬ã¯ã·ã§ã³ã
*-ãµã€ãºã¯32ãããã·ã¹ãã ããã³å§çž®Oopsã®ãã€ãåäœã§æå®ãããŸããNã¯ãªã¹ãã®å®¹éã§ã
åœ¹è· | ã«ãã£ãŠèšç«ãããŸãã
ã« | 説æ | ãµã€ãº* |
---|---|---|---|
é
åãªã¹ã
| äžèŠ§ | åçã«å€åããé
åã«åºã¥ããListã€ã³ã¿ãŒãã§ã€ã¹ã®å®è£
ã ã»ãšãã©ã®å ŽåãListã€ã³ã¿ãŒãã§ã€ã¹ã®æé©ãªå®è£
ã¯ãã¡ã¢ãªæ¶è²»ãšããã©ãŒãã³ã¹ã§ãã éåžžã«ãŸããªã±ãŒã¹ã§ããªã¹ãã®å
é ãŸãã¯äžå€®ã«éåžžã«å°ããæååãé »ç¹ã«æ¿å
¥ããå¿
èŠãããå Žå
ãªã¹ãäžã®ç§»ååæ°ã«ãããLinkedListã¯ããã©ãŒãã³ã¹ã®åäžã«ã€ãªãããŸãïŒãã ãããããã®å Žåã¯ãApacheã®TreeListã䜿çšããããšããå§ãããŸãïŒã 詳现ãèå³æ·±ãArrayListã§ããå Žåããã®èšäºãåç §ããããšããå§ãããŸãã | 4 * N
|
LinkedList
| äžèŠ§ | åæ¹åãªã³ã¯ãªã¹ãã«åºã¥ããListã€ã³ã¿ãŒãã§ã€ã¹ã®å®è£
ãã€ãŸããåèŠçŽ ãåã®èŠçŽ ãšæ¬¡ã®èŠçŽ ãæããŠããå Žåã ååãšããŠãArrayListãããå€ãã®ã¡ã¢ãªãšããã©ãŒãã³ã¹ãå¿
èŠã§ãããªã¹ãå
ã®æå°ã®ç§»åã§ãªã¹ãã®äžå€®ã§ã®æ¿å
¥/åé€ãå¿
èŠã«ãªãããšãå€ããŸããªå Žåã«ã®ã¿äœ¿çšããã®ãçã«ããªã£ãŠããŸãïŒãã ãããããã®å Žåã¯ApacheããTreeListã䜿çšããããšããå§ãããŸãã Dequeã€ã³ã¿ãŒãã§ã€ã¹ã Queueã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠäœæ¥ããå ŽåãLinkedListã¯FIFOãã¥ãŒãšããŠæ©èœããŸãã LinkedListã®è©³çŽ°ã«èå³ãããå Žåã¯ããã®èšäºãåç
§ããããšããå§ãããŸãã
| 24 * N
|
java.util.concurrentããã±ãŒãžã®ã³ã¬ã¯ã·ã§ã³
åœ¹è· | ã«ãã£ãŠèšç«ãããŸãã
ã« | 説æ |
---|---|---|
CopyOnWriteArrayList
| äžèŠ§ | ArrayListã«äŒŒãListã€ã³ã¿ãŒãã§ã€ã¹ã®å®è£
ã§ããããªã¹ããå€æŽããããã³ã«äœæãããŸã
ã³ã¬ã¯ã·ã§ã³å šäœã®æ°ããã³ããŒã ããã«ã¯ãã³ã¬ã¯ã·ã§ã³ãå€æŽããããã³ã«éåžžã«å€§ããªãªãœãŒã¹ãå¿ èŠã§ãã ãã ãããã®ã¿ã€ãã®ã³ã¬ã¯ã·ã§ã³ã§ã¯ãã³ã¬ã¯ã·ã§ã³ã å埩æéã |
ãªã¹ãã«åºã¥ãé«åºŠã«å°éåãããã³ã¬ã¯ã·ã§ã³ã
åœ¹è· | ã«åºã¥ã㊠| 説æ |
---|---|---|
圹å²ãªã¹ã
| é åãªã¹ã | ããŒã«ïŒããŒã«ïŒã®ãªã¹ããä¿åããããã®ã³ã¬ã¯ã·ã§ã³ã ã«åºã¥ããé«åºŠã«å°éåãããã³ã¬ã¯ã·ã§ã³
ããã€ãã®è¿œå ã¡ãœãããæã€ArrayList |
RoleUnresolvedList
| é åãªã¹ã | æªè§£æ±ºã®ããŒã«ïŒæªè§£æ±ºã®ããŒã«ïŒã®ãªã¹ããä¿åããããã®ã³ã¬ã¯ã·ã§ã³ã é«åºŠã«å°éåããã
ArrayListããŒã¹ã®ã³ã¬ã¯ã·ã§ã³ãšããã€ãã®è¿œå ã¡ãœãã |
AttributeList
| é åãªã¹ã | MBeanå±æ§ãæ ŒçŽããããã®ã³ã¬ã¯ã·ã§ã³ã ArrayListã«åºã¥ãé«åºŠã«å°éåãããã³ã¬ã¯ã·ã§ã³
ããã€ãã®è¿œå ã®æ¹æ³ã§ |
*-ãµã€ãºã¯32ãããã·ã¹ãã ããã³å§çž®Oopsã®ãã€ãåäœã§æå®ãããŸããNã¯ãªã¹ãã®å®¹éã§ã
5ïŒ Setã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ããã³ã¬ã¯ã·ã§ã³ïŒå€ãïŒ
Setã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããã³ã¬ã¯ã·ã§ã³ïŒå€ãïŒ
*-ãµã€ãºã¯ã32ãããã·ã¹ãã ããã³å§çž®Oopsã®ãã€ãåäœã§æå®ãããŸããCã¯ãªã¹ãã®å®¹éãSã¯ãªã¹ãã®ãµã€ãºã§ã
ã»ããã«åºã¥ãç¹æ®ã³ã¬ã¯ã·ã§ã³
java.util.concurrentããã±ãŒãžã®ã³ã¬ã¯ã·ã§ã³
åœ¹è· | ã«ãã£ãŠèšç«ãããŸãã
ã« | 説æ | ãµã€ãº* |
---|---|---|---|
ããã·ã¥ã»ãã | ã»ãã | ããã·ã¥ããŒãã«ã䜿çšããSetã€ã³ã¿ãŒãã§ã€ã¹ã®å®è£
ã ã»ãšãã©ã®å ŽåãSetã€ã³ã¿ãŒãã§ã€ã¹ã®æé©ãªå®è£
ãå¯èœã§ãã
| 32 * S + 4 * C
|
LinkedHashSet
| ããã·ã¥ã»ãã | ããã·ã¥ããŒãã«ãšãªã³ã¯ãªã¹ãã«åºã¥ãSetã€ã³ã¿ãŒãã§ã€ã¹ã®å®è£
ã HashSetãšã»ãŒåãé床ã§åäœããã¢ããªã³ã»ããã äžè¬ã«ãHashSetãšã»ãŒåãã§ããã»ããã«å¯Ÿããå埩ã®é åºã®ã¿ããèŠçŽ ãè¿œå ããé åºã«ãã£ãŠæ±ºå®ãããŸã
åããŠèšå®ããŸãã | 40 * S + 4 * C |
ããªãŒã»ãã | ããã²ãŒã·ã§ã³å¯èœã»ãã
| èµ€é»æšã䜿çšããNavigableSetã€ã³ã¿ãŒãã§ã€ã¹ã®å®è£
ã ã³ã³ãã¬ãŒã¿ãŸãã¯èªç¶é åºã䜿çšããŠãœãŒããããŸããã€ãŸãããœãŒãèŠåã«å¿ããŠè€æ°ã®ãã©ããŒãµã«/å埩ãçºçããŸãã HashMapã«åºã¥ãHashSetã®ãããªTreeMapã«åºã¥ã
| 40 * S |
Enumset | ã»ãã | ããããã¯ãã«ã«åºã¥ãSetãã¯ãã«ã€ã³ã¿ãŒãã§ã€ã¹ã®é«æ§èœå®è£
ã EnumSetãªããžã§ã¯ãã®ãã¹ãŠã®èŠçŽ ã¯ã1ã€ã®åäžã®åæåã«å±ããŠããå¿
èŠããããŸã
| S / 8 |
*-ãµã€ãºã¯ã32ãããã·ã¹ãã ããã³å§çž®Oopsã®ãã€ãåäœã§æå®ãããŸããCã¯ãªã¹ãã®å®¹éãSã¯ãªã¹ãã®ãµã€ãºã§ã
ã»ããã«åºã¥ãç¹æ®ã³ã¬ã¯ã·ã§ã³
åœ¹è· | ã«ãã£ãŠèšç«ãããŸãã
ã« | 説æ |
---|---|---|
JobStateReasons
| ããã·ã¥ã»ãã | å°å·ãžã§ãã«é¢ããæ
å ±ïŒå°å·ãžã§ãã®å±æ§ã»ããïŒãä¿åããããã®ã³ã¬ã¯ã·ã§ã³ã
ããã€ãã®è¿œå ã¡ãœãããåããHashSetã«åºã¥ãé«åºŠã«å°éåãããã³ã¬ã¯ã·ã§ã³ |
java.util.concurrentããã±ãŒãžã®ã³ã¬ã¯ã·ã§ã³
åœ¹è· | ã«ãã£ãŠèšç«ãããŸãã
ã« | 説æ |
---|---|---|
CopyOnWriteArraySet
| ã»ãã | åæ§ã«ãCopyOnWriteArrayListã¯å€æŽããšã«ã»ããå
šäœã®ã³ããŒãäœæããããã
éåžžã«ãŸããªã³ã¬ã¯ã·ã§ã³ã®å€æŽããã³ã¹ã¬ããã»ãŒãèŠä»¶ã«æšå¥š |
ConcurrentSkipListSet
| ã»ãã | TreeSetã®ãã«ãã¹ã¬ããã¢ããã°ã§ãã |
6ïŒ Mapã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããã³ã¬ã¯ã·ã§ã³ïŒé£æ³é åïŒ
Mapã€ã³ã¿ãŒãã§ãŒã¹ãå®è£
ããã³ã¬ã¯ã·ã§ã³
Mapãå®è£
ããæ±çšæ±çšã³ã¬ã¯ã·ã§ã³ïŒ
*-ãµã€ãºã¯ã32ãããã·ã¹ãã ããã³å§çž®Oopsã®ãã€ãåäœã§æå®ãããŸããCã¯ãªã¹ãã®å®¹éãSã¯ãªã¹ãã®ãµã€ãºã§ã
java.util.concurrentããã±ãŒãžã®ã³ã¬ã¯ã·ã§ã³
åœ¹è· | ã«ãã£ãŠèšç«ãããŸãã
ã« | 説æ | ãµã€ãº* |
---|---|---|---|
ããã·ã¥ããã | å°å³ | ããã·ã¥ããŒãã«ã䜿çšããMapã€ã³ã¿ãŒãã§ã€ã¹ã®å®è£
ïŒéåæHashtableãšããŠæ©èœãã
ããŒãšnullå€ã®ãµããŒãïŒã ã»ãšãã©ã®å Žåãæé«ã®ããã©ãŒãã³ã¹ãš Mapã€ã³ã¿ãŒãã§ã€ã¹ã®ã¡ã¢ãªå®è£ ã HashMapããã€ã¹ã®è©³çŽ°ãèå³æ·±ãå Žåã¯ããã®èšäºãåç §ããããšããå§ãããŸãã | 32 * S + 4 * C |
LinkedHashMap
| ããã·ã¥ããã | ããã·ã¥ããŒãã«ãšãªã³ã¯ãªã¹ããã€ãŸããããå
ã®ããŒã«åºã¥ããMapã€ã³ã¿ãŒãã§ã€ã¹ã®å®è£
è¿œå ãããé ã«ä¿åããã³ãã€ãã¹ãããŸãã ãã®ã³ã¬ã¯ã·ã§ã³ã¯ã»ãŒåããããé«éã§ã ããã·ã¥ããã ãŸãããã£ãã·ã¥ã®äœæã«ã圹ç«ã¡ãŸãïŒ removeEldestEntryïŒMap.EntryïŒïŒã LinkedHashMapããã€ã¹ã®è©³çŽ°ã«èå³ãããå Žåã¯ããã®èšäºãåç §ããããšããå§ãããŸãã | 40 * S + 4 * C |
ããªãŒããã | ããå¯èœããã
| èµ€é»ããªãŒã䜿çšããNavigableMapã®å®è£
ãã€ãŸãã³ã¬ã¯ã·ã§ã³ãããŒããã©ããŒã¹ãããšã
åãNavigableMapã䜿çšãããšãããŒã«æãè¿ãå€ãæ€çŽ¢ã§ããŸãã | 40 * S |
匱ç¹ããã
| å°å³ | HashMapãšåæ§ã§ããããã¹ãŠã®ããŒã¯åŒ±ãã§ã
匱ãåç §ãã€ãŸãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã«ããããªããžã§ã¯ãã®ããŒãšãªããžã§ã¯ããåé€ããã ãããã®ãªããžã§ã¯ããžã®ä»ã®åç §ãååšããªãå Žåã®å€ã WeakHashMapã¯æãç°¡åãªãã®ã®1ã€ã§ã 匱ããªã³ã¯ãæ倧éã«æŽ»çšããæ¹æ³ã | 32 * S + 4 * C |
Enummap | å°å³ | åçŽãªé
åã«åºã¥ããMapã€ã³ã¿ãŒãã§ãŒã¹ã®é«æ§èœå®è£
ã ãã¹ãŠã®ããŒ
ãã®ã³ã¬ã¯ã·ã§ã³ã¯ã1ã€ã®åæåã«ã®ã¿å±ããããšãã§ããŸãã | 4 * C |
IdentityHashMap
| å°å³ | HashMapã®ãããªIDããŒã¹ã®ãããã¯ããã·ã¥ããŒãã«ã«åºã¥ããŠããŸãããHashMapãšã¯ç°ãªãã
çãããªããžã§ã¯ããæ¯èŒããããšã¯ãããŸãããå®éã«åããã©ããã®ã¿ãæ¯èŒããŸã ã¡ã¢ãªå ã®ãªããžã§ã¯ãã 第äžã«ãã³ã¬ã¯ã·ã§ã³ã®äœæ¥ãå€§å¹ ã«é«éåãã第äºã«ã çãããå¥ã®ãªããžã§ã¯ãã«ãã£ãŠæå³çã«çæãããå Žåã®ãã¹ããŒãã£ã³ã°æ»æãã«å¯Ÿããä¿è·ã 第äžã«ããã®ã³ã¬ã¯ã·ã§ã³ã«ã¯ãã°ã©ãããã©ããŒã¹ãããšãã«å€ãã®çšéããããŸãïŒãã£ãŒãã³ããŒãªã©ïŒ 1ã€ã®ãªããžã§ã¯ããè€æ°ååŠçããããšãé¿ããå¿ èŠãããå Žåã | 8 * C |
*-ãµã€ãºã¯ã32ãããã·ã¹ãã ããã³å§çž®Oopsã®ãã€ãåäœã§æå®ãããŸããCã¯ãªã¹ãã®å®¹éãSã¯ãªã¹ãã®ãµã€ãºã§ã
java.util.concurrentããã±ãŒãžã®ã³ã¬ã¯ã·ã§ã³
åœ¹è· | ã«ãã£ãŠèšç«ãããŸãã
ã« | 説æ |
---|---|---|
䞊è¡ããã·ã¥ããã
| ã³ã³ã«ã¬ã³ãããã
| HashMapã®ãã«ãã¹ã¬ããã¢ããã°ã ãã¹ãŠã®ããŒã¿ã¯åå¥ã®ã»ã°ã¡ã³ãã«åå²ããããããã¯ãããã®ã¿
å€æŽæã®åã ã®ã»ã°ã¡ã³ãããã«ãã¹ã¬ããã§ã®äœæ¥ãå€§å¹ ã«é«éåããŸã ã¢ãŒãã ã€ãã¬ãŒã¿ã¯ããã®ã¿ã€ãã®ã³ã¬ã¯ã·ã§ã³ã«å¯ŸããŠConcurrentModificationExceptionãã¹ããŒããããšã¯ãããŸããã |
ConcurrentSkipListMap
| 䞊è¡ããã²ãŒã·ã§ã³å¯èœããã
| TreeMapã®ãã«ãã¹ã¬ããã®é¡äŒŒç©ã§ã |
7ïŒ ãã¥ãŒ/ããã¥ãŒã€ã³ã¿ãŒãã§ã€ã¹ ïŒãã¥ãŒïŒã«åºã¥ãã³ã¬ã¯ã·ã§ã³
ãã¥ãŒ/ããã¥ãŒããŒã¹ã®ã³ã¬ã¯ã·ã§ã³
*-ãµã€ãºã¯ã32ãããã·ã¹ãã ããã³å§çž®Oopsã®ãã€ãåäœã§æå®ãããŸããCã¯ãªã¹ãã®å®¹éãSã¯ãªã¹ãã®ãµã€ãºã§ã
java.util.concurrentã§å®çŸ©ãããŠãããã«ãã¹ã¬ãããã¥ãŒãšããã¯ã¯ãåå¥ã®èšäºãå¿ èŠãšããããããããã«é¢ããæ å ±ã«èå³ãããå Žåã¯ããã§ã¯èª¬æããŸããããã®èšäºãèªãããšããå§ãããŸã
åœ¹è· | ã«ãã£ãŠèšç«ãããŸãã
ã« | 説æ | ãµã€ãº* |
---|---|---|---|
é
å
| ãã± | åçé
åã«åºã¥ãDequeã€ã³ã¿ãŒãã§ãŒã¹ã®å¹ççãªå®è£
ãé¡äŒŒ
é åãªã¹ã | 6 * N |
LinkedList
| ãã± | åæ¹åãªã³ã¯ãªã¹ãã«åºã¥ãList and Dequeã€ã³ã¿ãŒãã§ã€ã¹ã®å®è£
ãã€ãŸããåèŠçŽ ãåã®èŠçŽ ãšæ¬¡ã®èŠçŽ ãæãå ŽåãQueueã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠäœæ¥ããå ŽåãLinkedListã¯FIFOãã¥ãŒãšããŠæ©èœããŸãã
| 40 * N |
PriorityQueue
| ãã¥ãŒ | ããŒãïŒããŒãïŒã«åºã¥ãç¡å¶éã®åªå
床ãã¥ãŒã ãœãŒããããã¢ã€ãã
ããããŸãããŸãã¯ã³ã³ãã¬ãŒã¿ã䜿çšããŠã nullèŠçŽ ãå«ããããšã¯ã§ããŸããã |
*-ãµã€ãºã¯ã32ãããã·ã¹ãã ããã³å§çž®Oopsã®ãã€ãåäœã§æå®ãããŸããCã¯ãªã¹ãã®å®¹éãSã¯ãªã¹ãã®ãµã€ãºã§ã
java.util.concurrentã§å®çŸ©ãããŠãããã«ãã¹ã¬ãããã¥ãŒãšããã¯ã¯ãåå¥ã®èšäºãå¿ èŠãšããããããããã«é¢ããæ å ±ã«èå³ãããå Žåã¯ããã§ã¯èª¬æããŸããããã®èšäºãèªãããšããå§ãããŸã
8ïŒãã®ä»ã®ã³ã¬ã¯ã·ã§ã³
ãã®ä»ã®ã³ã¬ã¯ã·ã§ã³
åœ¹è· | 説æ | ãµã€ãº* |
---|---|---|
ãããã»ãã
| ãã®ååã«ãããããããBitSetã¯Setã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããŸããã BitSetã¯ããããé
åã®ã³ã³ãã¯ããªèšé²ã«äœ¿çšãããŸãã
| N / 8
|
9ïŒã³ã¬ã¯ã·ã§ã³ãæäœããæ¹æ³
ã³ã¬ã¯ã·ã§ã³ã¡ãœãã
ã¢ã«ãŽãªãºã -ã³ã¬ã¯ã·ã§ã³ã¯ã©ã¹ã«ã¯ãå€ãã®äŸ¿å©ãªçµ±èšææ³ãå«ãŸããŠããŸãã
ã³ã¬ã¯ã·ã§ã³ãæäœããã«ã¯ïŒ
ãªã¹ãã䜿çšããã«ã¯ïŒ
Java 8ã§ã¯ãã¹ããªãŒã Apiãªã©ã®ã³ã¬ã¯ã·ã§ã³ãæäœããæ¹æ³ãå°å ¥ãããŸãããããã®äœ¿çšäŸã«ã€ããŠã¯ã»ã¯ã·ã§ã³5ã§åŸè¿°ããŸãã
ã³ã¬ã¯ã·ã§ã³ãæäœããã«ã¯ïŒ
æ¹æ³ | 説æ |
---|---|
é »åºŠ ïŒã³ã¬ã¯ã·ã§ã³ããªããžã§ã¯ãïŒ
| æå®ãããã³ã¬ã¯ã·ã§ã³å ã®ãã®èŠçŽ ã®åºçŸåæ°ãè¿ããŸãã |
disjoint ïŒã³ã¬ã¯ã·ã§ã³ãã³ã¬ã¯ã·ã§ã³ïŒ | 2ã€ã®ã³ã¬ã¯ã·ã§ã³ã«å ±éã®èŠçŽ ããªãå Žåãtrueãè¿ããŸãã |
addAll ïŒã³ã¬ã¯ã·ã§ã³<ïŒã¹ãŒããŒT>ãT ...ïŒ | æå®ãããé åïŒãŸãã¯ãã©ã¡ãŒã¿ãŒã«ãªã¹ããããŠããïŒã®ãã¹ãŠã®èŠçŽ ãæå®ãããã³ã¬ã¯ã·ã§ã³ã«è¿œå ããŸã |
min ïŒã³ã¬ã¯ã·ã§ã³ïŒ | ã³ã¬ã¯ã·ã§ã³ããæå°ã¢ã€ãã ãè¿ããŸã |
max ïŒã³ã¬ã¯ã·ã§ã³ïŒ | ã³ã¬ã¯ã·ã§ã³ããæ倧ã®ã¢ã€ãã ãè¿ããŸã |
ãªã¹ãã䜿çšããã«ã¯ïŒ
æ¹æ³ | 説æ |
---|---|
ãœãŒã ïŒãªã¹ãïŒ | ã»ãšãã©ã®å Žåãããã©ãŒãã³ã¹ãé«å質ã®ã¯ã€ãã¯ãœãŒãã®ããã©ãŒãã³ã¹ã«è¿ãããŒãžãœãŒãã¢ã«ãŽãªãºã ã䜿çšãããœãŒãã«ãããOïŒn * log nïŒããã©ãŒãã³ã¹ïŒã¯ã€ãã¯ãœãŒãã§ã¯ãªãïŒãšå®å®æ§ïŒã¯ã€ãã¯ãœãŒãïŒã å®å®ãããœãŒãã¯ããœãŒãæã«åãèŠçŽ ã®é åºãå€æŽããªããã®ã§ã |
binarySearch ïŒãªã¹ãããªããžã§ã¯ãïŒ | ãã€ããªæ€çŽ¢ã¢ã«ãŽãªãºã ã䜿çšããŠããªã¹ãå ã®ã¢ã€ãã ãæ€çŽ¢ããŸãã |
ãªããŒã¹ ïŒãªã¹ãïŒ | ãã¹ãŠã®ãªã¹ãã¢ã€ãã ã䞊ã¹æ¿ãã |
ã·ã£ããã« ïŒãªã¹ãïŒ | ãªã¹ãå ã®ãã¹ãŠã®ã¢ã€ãã ãã©ã³ãã ã«ã·ã£ããã«ããŸã |
fill ïŒãªã¹ãããªããžã§ã¯ãïŒ | ãªã¹ãå ã®åã¢ã€ãã ãå€ã§äžæžããã |
ã³ã㌠ïŒãªã¹ãéä¿¡å ããªã¹ãéä¿¡å ïŒ | ãããªã¹ããå¥ã®ãªã¹ãã«ã³ããŒãã |
å転 ïŒãªã¹ããªã¹ããintè·é¢ïŒ | ãªã¹ãå ã®ãã¹ãŠã®ã¢ã€ãã ãæå®ãããè·é¢ã ã移åããŸãã |
replaceAll ïŒãªã¹ããªã¹ãããªããžã§ã¯ãoldValããªããžã§ã¯ãnewValïŒ | ããå€ã®ãã¹ãŠã®åºçŸãå¥ã®å€ã«çœ®ãæããŸã |
indexOfSubList ïŒãªã¹ããœãŒã¹ããªã¹ãã¿ãŒã²ããïŒ | ãœãŒã¹ãªã¹ãã§ã¿ãŒã²ãããªã¹ããæåã«çŸããã€ã³ããã¯ã¹ãè¿ããŸã |
lastIndexOfSubList ïŒãªã¹ããœãŒã¹ããªã¹ãã¿ãŒã²ããïŒ | ãœãŒã¹ãªã¹ãå ã®ã¿ãŒã²ãããªã¹ãã®æåŸã®åºçŸã®ã€ã³ããã¯ã¹ãè¿ããŸã |
ã¹ã¯ãã ïŒãªã¹ããintãintïŒ | æå®ãããäœçœ®ã«ããèŠçŽ ã亀æããŸã |
Java 8ã§ã¯ãã¹ããªãŒã Apiãªã©ã®ã³ã¬ã¯ã·ã§ã³ãæäœããæ¹æ³ãå°å ¥ãããŸãããããã®äœ¿çšäŸã«ã€ããŠã¯ã»ã¯ã·ã§ã³5ã§åŸè¿°ããŸãã
10ïŒããŸããŸãªã¿ã€ãã®JDKã³ã¬ã¯ã·ã§ã³ã¯å éšã§ã©ã®ããã«é 眮ãããŸãã
ããŸããŸãªã¿ã€ãã®JDKã³ã¬ã¯ã·ã§ã³ã¯å
éšã§ã©ã®ããã«é
眮ãããŸãã
åé | å éšããã€ã¹ã®èª¬æ |
---|---|
é åãªã¹ã | ãã®ã³ã¬ã¯ã·ã§ã³ã¯ãé
åã®èšå®+ãªã¹ãã®ãµã€ãºãæ ŒçŽããå€æ°ã§ãã äžã ã
æ°ããèŠçŽ ãè¿œå ããå Žæããªããã³ã«åäœæãããé åã 㧠ã³ã¬ã¯ã·ã§ã³å ã®èŠçŽ ãè¿œå ãŸãã¯åé€ããå Žåãã¡ã¢ãªå šäœã§ããŒã«å šäœãã·ãããããŸã æ°ããå Žæã 幞ããªããšã«ã容éãå¢ãããªããããŸãã¯è¿œå /åé€ãããšãã«ã¢ã¬ã€ãã³ããŒããŸã é«éãªãã€ãã£ã/ã·ã¹ãã ã¡ãœããã«ãã£ãŠçæãããèŠçŽ ã 詳现ãèå³æ·±ãå Žå ãã®èšäºãã芧ã«ãªãããšããå§ãããŸãã |
LinkedList | ã³ã¬ã¯ã·ã§ã³å
ã§ã¯ãåã®èŠçŽ ãžã®ãªã³ã¯ãå«ãå
éšNodeã¯ã©ã¹ã䜿çšããã
次ã®èŠçŽ ãšèŠçŽ èªäœã®å€ã ã³ã¬ã¯ã·ã§ã³ã€ã³ã¹ã¿ã³ã¹èªäœã«ãµã€ãºãšãªã³ã¯ãæ ŒçŽãããŸã ã³ã¬ã¯ã·ã§ã³ã®æåãšæåŸã®èŠçŽ ã ãªããžã§ã¯ããäœæããããšã¯ã ããã©ãŒãã³ã¹ãšã¡ã¢ãªãéäžçã«äœ¿çšããLinkedList ã¢ããã°ãããã¯ããã«å€ãã®ã¡ã¢ãªã éåžžãArrayListãArrayDequeryã¯ããã©ãŒãã³ã¹ãšã¡ã¢ãªã®æé©ãªãœãªã¥ãŒã·ã§ã³ã§ããããŸããªã±ãŒã¹ïŒãªã¹ãã®äžå€®ã«é »ç¹ã«æ¿å ¥ããããªã¹ãå ã®ãŸããªåããçºçããïŒã圹ç«ã€å ŽåããããŸãïŒãã ãããã®å Žåã¯apacheããTreeListã䜿çšããæ¹ã䟿å©ã§ãïŒã 詳现ãèå³æ·±ãå Žåã¯ããã®èšäºãã芧ã«ãªãããšããå§ãããŸãã |
ããã·ã¥ããã | ãã®ã³ã¬ã¯ã·ã§ã³ã¯ãããã·ã¥ããŒãã«äžã«æ§ç¯ãããŸããã€ãŸããã³ã¬ã¯ã·ã§ã³å
ã«ã¯ãã³ã¬ã¯ã·ã§ã³ã®å®¹éã«çããå
éšã¯ã©ã¹ïŒãã±ããïŒããŒãã®é
åããããŸãã æ°ããèŠçŽ ãè¿œå ãããšããã®ããã·ã¥é¢æ°ãèšç®ããããã£ãã·ãã£HashMapã¢ãžã¥ãã§é€ç®ããããããé
åå
ã®èŠçŽ ã®äœçœ®ãèšç®ãããŸãã ãã®å Žæã«èŠçŽ ããŸã ä¿åãããŠããªãå Žåãè¿œå ãããèŠçŽ ãžã®ãªã³ã¯ãå«ãæ°ããNodeãªããžã§ã¯ããäœæãããé
åå
ã®ç®çã®å Žæã«æžã蟌ãŸããŸãã ãã®å Žæã«æ¢ã«èŠçŽ ãååšããå ŽåïŒããã·ã¥è¡çªãçºçããå ŽåïŒãNodeã¯åºæ¬çã«åçŽã«ãªã³ã¯ããããªã¹ãã§ããã€ãŸãã次ã®èŠçŽ ãžã®ãªã³ã¯ãå«ãŸããŸãããªã¹ãå
ã®ãã¹ãŠã®èŠçŽ ããã€ãã¹ããè¿œå ãããèŠçŽ ãšçãããã©ããã確èªã§ããŸããã®ãããªäžèŽãèŠã€ãããªãã£ãå Žåãæ°ããNodeãªããžã§ã¯ããäœæããããªã¹ãã®æåŸã«è¿œå ãããŸãã ãªã³ã¯ãªã¹ãïŒãã±ããïŒã®èŠçŽ ã®æ°ã8åãè¶
ããèŠçŽ ã«ãªããšã代ããã«ãã€ããªããªãŒãäœæãããŸãã ããã·ã¥ããŒãã«ã®è©³çŽ°ã«ã€ããŠã¯ã wikiãåç
§ããŠãã ããïŒHashMapã¯ãã§ãŒã³ã¡ãœããã䜿çšããŠè¡çªã解決ããŸãïŒã HashMapããã€ã¹ã®è©³çŽ°ãèå³æ·±ãå Žåã¯ããã®èšäºãåç
§ããããšããå§ãããŸãã
|
ããã·ã¥ã»ãã | HashSetã¯åãªãHashMapã§ãããå€ã®ä»£ããã«åœã®ãªããžã§ã¯ããæžã蟌ãŸããããŒã®ã¿ãéèŠã§ãã HashSetå
ã«ã¯ãHashMapã³ã¬ã¯ã·ã§ã³ãåžžã«ä¿åãããŸãã
|
IdentityHashMap | IdentityHashMapã¯HashMapã«é¡äŒŒããŠããŸãããèŠçŽ ãçãããã©ããããã§ãã¯ããå¿
èŠããªãããã
2ã€ã®èŠçŽ ã®éãã ç°ãªããªããžã§ã¯ããæããŸãã ããã®ãããã§ã å éšã¯ã©ã¹Nodeãåãé€ãããã¹ãŠã®ããŒã¿ã1ã€ã®é åã«æ ŒçŽããè¡çªãçºçãã é©åãªç©ºãã»ã«ãèŠã€ãããŸã§æ€çŽ¢ãããŸãïŒ ã¡ãœãã ãªãŒãã³ã¢ãã¬ãã·ã³ã° ïŒããã·ã¥ããŒãã«ã®è©³çŽ°ã«ã€ããŠã¯ã wikiãåç §ããŠãã ãã ïŒIdentityHashMapã¯ãªãŒãã³ã¢ãã¬ãã·ã³ã°ã¡ãœããã䜿çšããŠè¡çªã解決ããŸãïŒ |
LinkedHashMap / LinkedHashSet | å
éšæ§é ã¯HashMapãšã»ãŒåãã§ããã代ããã«
å éšã¯ã©ã¹NodeãTreeNodeã䜿çšããŸããTreeNodeã¯åã®å€ãšæ¬¡ã®å€ãç¥ã£ãŠããŸãã ããã«ãããããŒãè¿œå ããé åºã§LinkedHashMapããã€ãã¹ã§ããŸãã åºæ¬çã«LinkedHashMap = HashMap + LinkedListã LinkedHashMapããã€ã¹ã®è©³çŽ°ã«èå³ãããå Žåã¯ããã®èšäºãåç §ããããšããå§ãããŸãã |
TreeMap / TreeSet | ãããã®ã³ã¬ã¯ã·ã§ã³ã®å
éšæ§é ã¯ããã©ã³ã¹ã®åããèµ€é»ã®ããªãŒäžã«æ§ç¯ããã
wikiã§è©³çŽ°ãèªã |
匱ç¹ããã | å
éšã§ã¯ãéåžžã®ãªã³ã¯ã§ã¯ãªãããã¹ãŠãHashMapã®ããã«æŽçãããŠããŸã
WeakReferenceã䜿çšãããåé€ã«å¿ èŠãªå¥ã®ReferenceQueueãã¥ãŒããããŸã 匱ããšã³ã㪠|
EnumSet / EnumMap | EnumSetãšEnumMapã¯ãHashSetãHashMapãšã¯ç°ãªããããããã¯ãã«ãšé
åã䜿çšããŠ
ããŒã¿ã¹ãã¬ãŒãžãã³ã³ãã¯ãã«ããããã©ãŒãã³ã¹ãåäžãããŸãã ãããã®ã³ã¬ã¯ã·ã§ã³ã®å¶é㯠EnumSetãšEnumMapã¯ã1ã€ã®Enumã®å€ã®ã¿ãããŒãšããŠä¿åã§ããŸãã |
11ïŒæšæºã³ã¬ã¯ã·ã§ã³ã©ã€ãã©ãªã®ä»ã®æçšãªãšã³ãã£ãã£
æšæºã³ã¬ã¯ã·ã§ã³ã©ã€ãã©ãªã®ä»ã®æçšãªãšã³ãã£ãã£
å
¬åŒã®ã³ã¬ã¯ã·ã§ã³ã¬ã€ãã«å«ãŸããä»ã®æçšãªãšã³ãã£ãã£ãèŠãŠã¿ãŸãããã
1ïŒ ã©ãããŒå®è£ -æ©èœãè¿œå ããä»ã®å®è£ ã®åäœãå€æŽããããã®ã©ãããŒã çµ±èšçææ³ã®ã¿ã䜿çšããŠã¢ã¯ã»ã¹ããŸãã
2ïŒ ã¢ããã¿ã®å®è£ -ãã®å®è£ ã¯ã1ã€ã®ã³ã¬ã¯ã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ãå¥ã®ã³ã¬ã¯ã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ã«é©åãããŸã
3ïŒ äŸ¿å©ãªå®è£ -ã³ã¬ã¯ã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ã®é«æ§èœãªãããå®è£ ãã
4ïŒ ã€ã³ã¿ãŒãã§ã€ã¹ã®æœè±¡çãªå®è£ -ã³ã¬ã¯ã·ã§ã³ã®ç¹å®ã®å®è£ ã®äœæãç°¡çŽ åããããã®å ±éæ©èœïŒã³ã¬ã¯ã·ã§ã³ã®ã¹ã±ã«ãã³ïŒã®å®è£ ã
4ïŒ ã€ã³ãã©
5ïŒæ³šæ
6ïŒã©ã³ã¿ã€ã äŸå€
7ïŒããã©ãŒãã³ã¹
8ïŒé åãæäœããããã®ãŠãŒãã£ãªãã£
1ïŒ ã©ãããŒå®è£ -æ©èœãè¿œå ããä»ã®å®è£ ã®åäœãå€æŽããããã®ã©ãããŒã çµ±èšçææ³ã®ã¿ã䜿çšããŠã¢ã¯ã»ã¹ããŸãã
- Collections.unmodifiableInterface-æå®ãããã³ã¬ã¯ã·ã§ã³ã«åºã¥ããŠå€æŽäžå¯èœãªã³ã¬ã¯ã·ã§ã³ãäœæããããã®ã©ãããŒããã®ã³ã¬ã¯ã·ã§ã³ãå€æŽããããšãããšUnsupportedOperationExceptionãã¹ããŒãããŸã
- Collections.synchronizedInterface-æå®ãããã³ã¬ã¯ã·ã§ã³ã«åºã¥ããŠåæã³ã¬ã¯ã·ã§ã³ãäœæããŸããããŒã¹ã³ã¬ã¯ã·ã§ã³ãžã®ã¢ã¯ã»ã¹ããã®é¢æ°ã«ãã£ãŠè¿ãããã³ã¬ã¯ã·ã§ã³ã©ãããŒãä»ããŠããéããã¹ã¬ããã»ãŒããä¿èšŒãããŸãã
- Collections.checkedInterface-åãã§ãã¯ä»ãã®ã³ã¬ã¯ã·ã§ã³ãåçã«è¿ããŸã
ïŒå®è¡æïŒãã€ãŸããæå®ãããã³ã¬ã¯ã·ã§ã³ã®ã¿ã€ãã»ãŒããã¥ãŒãè¿ããŸãã
ééã£ãåã®èŠçŽ ãè¿œå ããããšãããšãClassCastExceptionãã¹ããŒãããŸãã 䜿çšããå Žå
æ±çšJDKã¡ã«ããºã ã¯ãã³ã³ãã€ã«ã¬ãã«ã§åã®ã³ã³ãã€ã«ããã§ãã¯ããŸããããã®ã¡ã«ããºã
ãã€ãã¹ããããšãã§ããåçãªåãã§ãã¯ã§ã¯ãã®æ©äŒãå©çšã§ããŸããã
2ïŒ ã¢ããã¿ã®å®è£ -ãã®å®è£ ã¯ã1ã€ã®ã³ã¬ã¯ã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ãå¥ã®ã³ã¬ã¯ã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ã«é©åãããŸã
- newSetFromMapïŒMapïŒ-Setã€ã³ã¿ãŒãã§ãŒã¹ã®å®è£ ããMapã€ã³ã¿ãŒãã§ãŒã¹ã®å®è£ ãäœæããŸãã
- asLifoQueueïŒDequeïŒ-Dequeããã®ãã¥ãŒããLast In First OutïŒLIFOïŒã®åçã«åºã¥ãããã¥ãŒãšããŠè¿ããŸãã
3ïŒ äŸ¿å©ãªå®è£ -ã³ã¬ã¯ã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ã®é«æ§èœãªãããå®è£ ãã
- Arrays.asList-é åããªã¹ããšããŠè¡šç€ºã§ããŸã
- emptySetãemptyListãããã³emptyMap-空ã®ã»ããããªã¹ãããŸãã¯ç©ºã®æªå€æŽã®å®è£
ãè¿ããŸãã
å°å³
- singletonãsingletonListãsingletonMap -1ã€ã®æå®ããããªããžã§ã¯ãïŒãŸãã¯1ã€ã®ããŒãšå€ã®é¢ä¿ïŒãå«ãå€æŽäžå¯èœãªã»ããããªã¹ãããŸãã¯ããããè¿ããŸã
- nCopies-æå®ããããªããžã§ã¯ãã®nåã®ã³ããŒãå«ãå€æŽäžå¯èœãªãªã¹ããè¿ããŸã
4ïŒ ã€ã³ã¿ãŒãã§ã€ã¹ã®æœè±¡çãªå®è£ -ã³ã¬ã¯ã·ã§ã³ã®ç¹å®ã®å®è£ ã®äœæãç°¡çŽ åããããã®å ±éæ©èœïŒã³ã¬ã¯ã·ã§ã³ã®ã¹ã±ã«ãã³ïŒã®å®è£ ã
- AbstractCollection-ã»ããã§ããªã¹ãã§ããªãã³ã¬ã¯ã·ã§ã³ïŒãããã°ãããã«ãã»ãããªã©ïŒã®Collectionã€ã³ã¿ãŒãã§ã€ã¹ã®æœè±¡å®è£
ã
- AbstractSet -Setã€ã³ã¿ãŒãã§ã€ã¹ã®æœè±¡çãªå®è£ ã
- AbstractList-é
åãªã©ã®ã©ã³ãã ã¢ã¯ã»ã¹ãèš±å¯ãããªã¹ãã®Listã€ã³ã¿ãŒãã§ã€ã¹ã®æœè±¡çãªå®è£
ã
- AbstractSequentialList-ãªã³ã¯ãªã¹ããªã©ã®ã·ãŒã±ã³ã·ã£ã«ã¢ã¯ã»ã¹ããŒã¹ã®ãªã¹ãçšã®Listã€ã³ã¿ãŒãã§ã€ã¹ã®æœè±¡çãªå®è£
ã
- AbstractQueue-æœè±¡ãã¥ãŒã®å®è£ ã
- AbstractMap-æœè±¡ãããã®å®è£ ã
4ïŒ ã€ã³ãã©
- ã€ãã¬ãŒã¿ -éåžžã®åæã€ã³ã¿ãŒãã§ã€ã¹ã«äŒŒãŠããŸãããåªããæ©èœãåããŠããŸãã
- Iterator -Enumerationã€ã³ã¿ãŒãã§ã€ã¹æ©èœã«å ããŠãã³ã¬ã¯ã·ã§ã³ããã¢ã€ãã ãåé€ããæ©èœãå«ãŸããŸãã
- ListIteratorã¯ãªã¹ãã«äœ¿çšãããã€ãã¬ãŒã¿ãŒã§ãåæ¹åã®å埩ãèŠçŽ ã®çœ®æãèŠçŽ ã®æ¿å
¥ãã€ã³ããã¯ã¹ã«ããååŸãªã©ãéåžžã®ã€ãã¬ãŒã¿ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®æ©èœãè¿œå ããŸãã
5ïŒæ³šæ
- æ¯èŒå¯èœ -ããããå®è£
ããã¯ã©ã¹ã®èªç¶ãªãœãŒãé ãå®çŸ©ããŸãã ãã®é åºã¯ããœãŒãæ¹æ³ã§äœ¿çšãããããœãŒããããã»ãããŸãã¯ããããå®è£
ããããã«äœ¿çšã§ããŸãã
- Comparator-é åºé¢ä¿ãè¡šããŸããããã¯ããœãŒããããã»ãããŸãã¯ãããå
ã®ãªã¹ããŸãã¯ã¡ã€ã³é åºããœãŒãããããã«äœ¿çšã§ããŸãã åã®èªç¶ãªé åºããªãŒããŒã©ã€ãããããComparableã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããŠããªãåã®ãªããžã§ã¯ããé åºä»ãããã§ããŸãã
6ïŒã©ã³ã¿ã€ã äŸå€
- UnsupportedOperationException-ãã®ãšã©ãŒã¯ãã³ã¬ã¯ã·ã§ã³ãåŒã³åºãããæäœããµããŒãããŠããªãå Žåã«ã¹ããŒãããŸãã
- ConcurrentModificationException-ã€ãã¬ãŒã¿ãŸãã¯ãªã¹ãã€ãã¬ãŒã¿ãã¹ããŒããŸããã€ãã¬ãŒã¿ãåºã¥ããŠããã³ã¬ã¯ã·ã§ã³ãïŒã¢ã«ãŽãªãºã ã®å ŽåïŒå埩äžã«äºæããå€æŽãããå Žåãã¡ã€ã³ãªã¹ããäºæããå€æŽãããå Žåã¯ãªã¹ãã«åºã¥ããã¥ãŒãã¹ããŒããŸãã
7ïŒããã©ãŒãã³ã¹
- RandomAccess-ãªã¹ããããŒã¯ããããŒã«ãŒã€ã³ã¿ãŒãã§ã€ã¹ã¯ãäœçœ®ã«ãã£ãŠèŠçŽ ã«ãã°ããïŒéåžžã¯äžå®æéïŒã¢ã¯ã»ã¹ã§ããããã«ããŸãã ããã«ãããã·ãŒã±ã³ã·ã£ã«ã¢ã¯ã»ã¹ãšäœçœ®ã¢ã¯ã»ã¹ã®éžæã«é¢ãããã®åäœãèæ ®ããã¢ã«ãŽãªãºã ãçæã§ããŸãã
8ïŒé åãæäœããããã®ãŠãŒãã£ãªãã£
- é å -é åã®ããã·ã¥ããœãŒããæ€çŽ¢ãæ¯èŒããµã€ãºå€æŽãååŸããããã®éçã¡ãœããã®ã»ããã ãŸããé åãæååã«å€æããé åãããªããã£ããŸãã¯ãªããžã§ã¯ãã§åããããã®ã¡ãœãããå«ãŸããŠããŸãã
ãã®èšäºã®è©³çŽ°ã«ã€ããŠã¯ãããšãã°ãã³ã¬ã¯ã·ã§ã³ã®æäœã«é¢ããã»ã¯ã·ã§ã³ããã°ã¢ããApache CommonsãEclipseïŒGS CollectionsïŒã®ã³ã¬ã¯ã·ã§ã³ã®äœ¿çšã«é¢ãã質åãªã©ã§ãã
IIã ã¹ããªãŒã API
é¢æ°åããã°ã©ãã³ã°ãã©ã ããããã³Java 8ã§è¿œå ãããæ©èœãã€ã³ã¿ãã¥ãŒã§éåžžã«äžè¬çã§ãã ãã®ããŒãã·ãŒãã§è©³çŽ°ã«èª¬æããŸããããããã§ã¯ç°¡åãªèª¬æã®ã¿ãè¡ããŸãã
ã¹ããªãŒã API
Java Stream APIã¯ã2çš®é¡ã®ã¡ãœãããæäŸããŸãã
1.ãã€ãã©ã€ã³-å¥ã®ã¹ããªãŒã ãè¿ããŸããã€ãŸãããã«ããŒãšããŠæ©èœãã
2.ã¿ãŒããã«-ã³ã¬ã¯ã·ã§ã³ãããªããã£ãããªããžã§ã¯ãããªãã·ã§ã³ãªã©ã®å¥ã®ãªããžã§ã¯ããè¿ããŸãã
Stream Api
Stream API . stream Java 8 , .
Stream Api SQL, :
次ã«ãStream Apiã䜿çšããŠãæ©èœçãªã¹ã¿ã€ã«ã§ãã®åé¡ã解決ã§ããŸãã
ããã«ãStream Apiã䜿çšãããšãäœåãªã³ãŒããªãã§streamïŒïŒãparallelStreamïŒïŒã«å€æŽããã ãã§åé¡ã䞊åã§è§£æ±ºã§ããŸãã
ã»ããã©ãåæããããããã¯ã®ãªã¹ã¯ãªã©ãªãããã§ã«ã³ãŒãã䞊ååããŸãã
Stream Api SQL, :
Integer sumOddOld = 0; for(Integer i: collection) { if(i % 2 != 0) { sumOddOld += i; } }
次ã«ãStream Apiã䜿çšããŠãæ©èœçãªã¹ã¿ã€ã«ã§ãã®åé¡ã解決ã§ããŸãã
Integer sumOdd = collection.stream().filter(o -> o % 2 != 0).reduce((s1, s2) -> s1 + s2).orElse(0);
ããã«ãStream Apiã䜿çšãããšãäœåãªã³ãŒããªãã§streamïŒïŒãparallelStreamïŒïŒã«å€æŽããã ãã§åé¡ã䞊åã§è§£æ±ºã§ããŸãã
Integer sumOdd = collection.parallelStream().filter(o -> o % 2 != 0).reduce((s1, s2) -> s1 + s2).orElse(0);
ã»ããã©ãåæããããããã¯ã®ãªã¹ã¯ãªã©ãªãããã§ã«ã³ãŒãã䞊ååããŸãã
I.ã¹ããªãŒã ãäœæããæ¹æ³
ã¹ããªãŒã ãäœæããæ¹æ³
ã¹ããªãŒã ãäœæããããã€ãã®æ¹æ³ã次ã«ç€ºããŸãã
ã¹ããªãŒã ãäœæããæ¹æ³ | äœæãã³ãã¬ãŒã | äŸ |
---|---|---|
1.ã¯ã©ã·ãã¯ïŒã³ã¬ã¯ã·ã§ã³ããã¹ããªãŒã ãäœæãã | ã³ã¬ã¯ã·ã§ã³ã ã¹ããªãŒã ïŒïŒ | |
2.å€ã®ã¹ããªãŒã ãäœæãã | Stream.of ïŒ value1 ã... valueN ïŒ | |
3.é åããã¹ããªãŒã ãäœæãã | Arrays.stream ïŒ é å ïŒ | |
4.ãã¡ã€ã«ããã¹ããªãŒã ãäœæããŸãïŒãã¡ã€ã«ã®åè¡ã¯ãã¹ããªãŒã ã®åå¥ã®èŠçŽ ã«ãªããŸãïŒ | Files.lines ïŒ ãã¡ã€ã«ãžã®ãã¹ ïŒ | |
5.æååããã¹ããªãŒã ãäœæãã | ãã¹ããªã³ã°ãã æå ïŒïŒ | |
6. Stream.builderã䜿çšãã | ã¹ããªãŒã ãã«ã㌠ïŒïŒã è¿œå ïŒ...ïŒ.... ãã«ã ïŒïŒ | |
7.䞊åã¹ããªãŒã ã®äœæ | ã³ã¬ã¯ã·ã§ã³ã parallelStream ïŒïŒ |
|
8. Stream.iterateã䜿çšããŠç¡éã®ã¹ããªãŒã ãäœæãã
| Stream.iterate ïŒ start_conditionãgeneration_expression ïŒ | |
9. Stream.generateã䜿çšããŠç¡éã¹ããªãŒã ãäœæããŸã | Stream.generate ïŒ generation_expression ïŒ | |
IIã ã¹ããªãŒãã³ã°æ¹æ³
Java Stream APIã¯ã2çš®é¡ã®ã¡ãœãããæäŸããŸãã
1.ãã€ãã©ã€ã³-å¥ã®ã¹ããªãŒã ãè¿ããŸããã€ãŸãããã«ããŒãšããŠæ©èœãã
2.ã¿ãŒããã«-ã³ã¬ã¯ã·ã§ã³ãããªããã£ãããªããžã§ã¯ãããªãã·ã§ã³ãªã©ã®å¥ã®ãªããžã§ã¯ããè¿ããŸãã
ãã€ãã©ã€ã³ãšã¿ãŒããã«ã¡ãœããã®éã
äžè¬çãªã«ãŒã« ïŒã¹ããªãŒã ã«ã¯ä»»æã®æ°ã®ãã€ãã©ã€ã³ã³ãŒã«ãšæåŸã«1ã€ã®ã¿ãŒããã«ãå«ããããšãã§ããŸããããã¹ãŠã®ãã€ãã©ã€ã³ã¡ãœããã¯é
延ããŠå®è¡ãããã¿ãŒããã«ã¡ãœãããåŒã³åºããããŸã§ãã¹ã¬ãããŸãã¯Runnableãªããžã§ã¯ããäœæããããã«å®éã«ã¢ã¯ã·ã§ã³ã¯çºçããŸãããã ããstartãåŒã³åºããªãã§ãã ããã
äžè¬ã«ããã®ã¡ã«ããºã ã¯SQLã¯ãšãªã®æ§ç¯ã«äŒŒãŠããããã¹ããããSelectã¯ããã€ãã£ãŠãããŸããŸããããçµæã¯1ã€ã ãã§ãã ããšãã°ãåŒcollection.streamïŒïŒãFilterïŒïŒsïŒ-> s.containsïŒ "1"ïŒïŒãSkipïŒ2ïŒ.findFirstïŒïŒãfilterããã³skipã¯ãã€ãã©ã€ã³åŠçãããfindFirstã¯ã¿ãŒããã«ã§ããããªããžã§ã¯ããè¿ããŸãããªãã·ã§ã³ã§ãããã§ã¹ããªãŒã ã®æäœãçµäºããŸãã
äžè¬ã«ããã®ã¡ã«ããºã ã¯SQLã¯ãšãªã®æ§ç¯ã«äŒŒãŠããããã¹ããããSelectã¯ããã€ãã£ãŠãããŸããŸããããçµæã¯1ã€ã ãã§ãã ããšãã°ãåŒcollection.streamïŒïŒãFilterïŒïŒsïŒ-> s.containsïŒ "1"ïŒïŒãSkipïŒ2ïŒ.findFirstïŒïŒãfilterããã³skipã¯ãã€ãã©ã€ã³åŠçãããfindFirstã¯ã¿ãŒããã«ã§ããããªããžã§ã¯ããè¿ããŸãããªãã·ã§ã³ã§ãããã§ã¹ããªãŒã ã®æäœãçµäºããŸãã
2.1ã¹ããªãŒã ãæäœããããã®ãã€ãã©ã€ã³åãããã¡ãœããã®ç°¡åãªèª¬æ
詳现
ã¹ããªãŒã æ¹åŒ | 説æ | äŸ |
---|---|---|
ãã£ã«ã¿ãŒ | ã¬ã³ãŒãããã£ã«ã¿ãªã³ã°ããæ¡ä»¶ã«äžèŽããã¬ã³ãŒãã®ã¿ãè¿ããŸã | collection.streamïŒïŒãfilterïŒ "a1" ::çããïŒ.countïŒïŒ |
é£ã°ã | Nåã®æåã®èŠçŽ ãã¹ãããã§ããŸã | collection.streamïŒïŒãskipïŒcollection.sizeïŒïŒ-1ïŒ.findFirstïŒïŒãorElseïŒ "1"ïŒ |
æ確㪠| éè€ã®ãªãã¹ããªãŒã ãè¿ããŸãïŒequalsã¡ãœããã®å ŽåïŒ | collection.streamïŒïŒãdistinctïŒïŒãcollectïŒCollectors.toListïŒïŒïŒ |
å°å³ | åã¹ããªãŒã é ç®ãå€æããŸã | collection.streamïŒïŒãmapïŒïŒsïŒ-> s + "_1"ïŒãcollectïŒCollectors.toListïŒïŒïŒ |
ã®ãã | åãã¹ããªãŒã ãè¿ããŸãããã¹ããªãŒã ã®åèŠçŽ ã«é¢æ°ãé©çšããŸã | collection.streamïŒïŒãmapïŒString :: toUpperCaseïŒ.peekïŒïŒeïŒ-> System.out.printïŒ "ã" + eïŒïŒã
collectïŒCollectors.toListïŒïŒïŒ |
éç | éžæãç¹å®ã®æ°ã®æåã®èŠçŽ ã«å¶éã§ããŸãã | collection.streamïŒïŒãlimitïŒ2ïŒ.collectïŒCollectors.toListïŒïŒïŒ |
ãœãŒãæžã¿ | èªç¶ãªé åºã§ããŸãã¯Comparatorãèšå®ããŠãå€ã䞊ã¹æ¿ããããšãã§ããŸã | collection.streamïŒïŒãsortïŒïŒãcollectïŒCollectors.toListïŒïŒïŒ |
mapToInt ã
mapToDouble ã mapToLong | mapã«é¡äŒŒããŠããŸãããæ°å€ã¹ããªãŒã ïŒã€ãŸããæ°å€ããªããã£ãã®ã¹ããªãŒã ïŒãè¿ããŸã | collection.streamïŒïŒãmapToIntïŒïŒsïŒ-> Integer.parseIntïŒsïŒïŒãtoArrayïŒïŒ |
flatMap ã
flatMapToInt ã flatMapToDouble ã flatMapToLong | mapã«äŒŒãŠããŸããã1ã€ã®èŠçŽ ããè€æ°ãäœæã§ããŸã | collection.streamïŒïŒãflatMapïŒïŒpïŒ-> Arrays.asListïŒp.splitïŒ "ã"ïŒïŒãstreamïŒïŒïŒãtoArrayïŒString [] :: newïŒ |
2.2ã¹ããªãŒã ãæäœãã端æ«æ¹æ³ã®ç°¡åãªèª¬æ
詳现
ã¡ãœããfindFirstãfindAnyãanyMatchã¯ç絡ã¡ãœããã§ããã€ãŸããã¹ããªãŒã ã®ãã€ãã¹ã¯ãå ã®ã¹ããªãŒã å šäœããã€ãã¹ããã«ãé©åãªèŠçŽ ãã§ããã ãæ©ãèŠã€ããããã«ç·šæãããŸãã
ã¹ããªãŒã æ¹åŒ | 説æ | äŸ |
---|---|---|
findFirst | ã¹ããªãŒã ã®æåã®èŠçŽ ãè¿ããŸãïŒãªãã·ã§ã³ãè¿ããŸãïŒ | collection.streamïŒïŒãfindFirstïŒïŒãorElseïŒ "1"ïŒ |
findAny | ã¹ããªãŒã ããé©åãªã¢ã€ãã ãè¿ããŸãïŒãªãã·ã§ã³ãè¿ããŸãïŒ | collection.streamïŒïŒãfindAnyïŒïŒãorElseïŒ "1"ïŒ |
éãã | ã³ã¬ã¯ã·ã§ã³ããã³ãã®ä»ã®ããŒã¿æ§é ã®åœ¢åŒã§ã®çµæã®è¡šç€º | collection.streamïŒïŒãfilterïŒïŒsïŒ-> s.containsïŒ "1"ïŒïŒãcollectïŒCollectors.toListïŒïŒïŒ |
æ°ãã | ã¹ããªãŒã å ã®èŠçŽ ã®æ°ãè¿ããŸã | collection.streamïŒïŒãfilterïŒ "a1" ::çããïŒ.countïŒïŒ |
anyMatch | å°ãªããšã1ã€ã®èŠçŽ ã«ã€ããŠæ¡ä»¶ãæºããããå Žåãtrueãè¿ããŸã | collection.streamïŒïŒãanyMatchïŒ "a1" ::çããïŒ |
ãªãäžèŽ | ããããã®èŠçŽ ã«ã€ããŠæ¡ä»¶ãæºããããªãå Žåãtrueãè¿ããŸã | collection.streamïŒïŒãnoneMatchïŒ "a8" ::çããïŒ |
allMatch | ãã¹ãŠã®èŠçŽ ã«ã€ããŠæ¡ä»¶ãçã®å Žåãçãè¿ããŸã | collection.streamïŒïŒãallMatchïŒïŒsïŒ-> s.containsïŒ "1"ïŒïŒ |
å | ã³ã³ãã¬ãŒã¿ãŒãæ¡ä»¶ãšããŠäœ¿çšããŠãæå°èŠçŽ ãè¿ããŸã | collection.streamïŒïŒãminïŒString :: compareToïŒ.getïŒïŒ |
æ倧 | ã³ã³ãã¬ãŒã¿ãŒãæ¡ä»¶ãšããŠäœ¿çšããŠãæ倧èŠçŽ ãè¿ããŸã | collection.streamïŒïŒãmaxïŒString :: compareToïŒ.getïŒïŒ |
forEach | åã¹ããªãŒã ãªããžã§ã¯ãã«é¢æ°ãé©çšããŸã;䞊åå®è¡ã§ã®é åºã¯ä¿èšŒãããŸãã | set.streamïŒïŒãforEachïŒïŒpïŒ-> p.appendïŒ "_ 1"ïŒïŒ; |
forEachOrdered | åã¹ããªãŒã ãªããžã§ã¯ãã«é¢æ°ãé©çšããŸã;èŠçŽ ã®é åºãä¿æãããšã | list.streamïŒïŒãforEachOrderedïŒïŒpïŒ-> p.appendïŒ "_ new"ïŒïŒ; |
toArray | ã¹ããªãŒã å€ã®é åãè¿ããŸã | collection.streamïŒïŒãmapïŒString :: toUpperCaseïŒ.toArrayïŒString [] :: newïŒ; |
æžãã | ã³ã¬ã¯ã·ã§ã³å šäœã§éèšé¢æ°ãå®è¡ããåäžã®çµæãè¿ãããšãã§ããŸã | collection.streamïŒïŒãreduceïŒïŒs1ãs2ïŒ-> s1 + s2ïŒ.orElseïŒ0ïŒ |
ã¡ãœããfindFirstãfindAnyãanyMatchã¯ç絡ã¡ãœããã§ããã€ãŸããã¹ããªãŒã ã®ãã€ãã¹ã¯ãå ã®ã¹ããªãŒã å šäœããã€ãã¹ããã«ãé©åãªèŠçŽ ãã§ããã ãæ©ãèŠã€ããããã«ç·šæãããŸãã
2.3æ°å€ã¹ããªãŒã ã®è¿œå ã¡ãœããã®ç°¡åãªèª¬æ
詳现
ã¹ããªãŒã æ¹åŒ | 説æ | äŸ |
---|---|---|
åèš | ãã¹ãŠã®æ°å€ã®åèšãè¿ããŸã | collection.streamïŒïŒãmapToIntïŒïŒsïŒ-> Integer.parseIntïŒsïŒïŒãsumïŒïŒ |
å¹³åç | ãã¹ãŠã®æ°å€ã®ç®è¡å¹³åãè¿ããŸã | collection.streamïŒïŒãmapToIntïŒïŒsïŒ-> Integer.parseIntïŒsïŒïŒãaverageïŒïŒ |
mapToObj | æ°å€ã¹ããªãŒã ããªããžã§ã¯ãã¹ããªãŒã ã«å€æããŸã | intStream.mapToObjïŒïŒidïŒ->æ°ããããŒïŒidïŒïŒãtoArrayïŒïŒ |
2.4ä»ã®ããã€ãã®äŸ¿å©ãªã¹ããªãŒã ã¡ãœãã
詳现
ã¹ããªãŒã æ¹åŒ | 説æ |
---|---|
isParallel | ã¹ããªãŒã ã䞊åãã©ããã調ã¹ã |
å¹³è¡ | 䞊åã¹ããªãŒã ãè¿ããŸããã¹ããªãŒã ãæ¢ã«äžŠåã§ããå Žåãããèªäœãè¿ãããšãã§ããŸã |
ã·ãŒã±ã³ã·ã£ã« | é 次ã¹ããªãŒã ãè¿ããŸããã¹ããªãŒã ãæ¢ã«ã·ãªã¢ã«ã§ããå Žåãããèªäœãè¿ãããšãã§ããŸã |
äžèšã®å 容ãæ確ã§ãªãå Žåã¯ãå¥ã®èšäºãã芧ã«ãªãããšããå§ãããŸã
IIIã é£èŒ
ãã®ãããã¯ã«ã€ããŠããã€ã³ã¿ãã¥ãŒã§é »ç¹ã«è³ªåããããŸãã
èªã...
äž»ãªã¯ã©ã¹ïŒ
1. ObjectOutput-ãªããžã§ã¯ãã®ãæåãã·ãªã¢ã«åã®ããã®ã¹ããªãŒã ã€ã³ã¿ãŒãã§ã€ã¹ã ã¡ã€ã³ã¡ãœããwriteObjectïŒãªããžã§ã¯ãïŒ-ã¹ããªãŒã ãžã®ãªããžã§ã¯ãã®æžã蟌ã¿ãæžã蟌ã¿ïŒ...ïŒ-é åã®æžã蟌ã¿ããã©ãã·ã¥ïŒïŒ-ã¹ããªãŒã ã®ä¿åã ObjectOutputStreamã®åºæ¬çãªå®è£
2. ObjectInput-ã·ãªã¢ã«ååŸã«ãªããžã§ã¯ããæåã§åŸ©å ããããã®ã¹ããªãŒã ã€ã³ã¿ãŒãã§ã€ã¹ã ã¡ã€ã³ã®readObjectïŒïŒã¡ãœããã¯ãªããžã§ã¯ããèªã¿åããskipã¯nãã€ããã¹ãããããŠããŸãã ObjectInputStreamã®ã¡ã€ã³å®è£ ã
3. Serializable-ãªããžã§ã¯ãã®ã·ãªã¢ã«åããªããžã§ã¯ãã®ç¶æ ãèªåçã«ä¿åããã³åŸ©å ããã€ã³ã¿ãŒãã§ã€ã¹ã
ãã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ãããªããžã§ã¯ãã¯æ¬¡ã®ããšãè¡ãå¿ èŠããããŸãã
1.æãè¿ãéã·ãªã¢ã«åå¯èœãªç¥å ããã®åŒæ°ãªãã§ã³ã³ã¹ãã©ã¯ã¿ãŒã«ã¢ã¯ã»ã¹ã§ããŸãã
serialPersistentFieldsããã³transientã䜿çšããŠãã·ãªã¢ã«åå¯èœããã³éã·ãªã¢ã«åå¯èœãã£ãŒã«ããããŒã¯ããŸãã
ãŸãããã®ãããªã¯ã©ã¹ã¯ã¡ãœãããå®è£ ã§ããŸãïŒãªãã·ã§ã³ïŒïŒ
1. writeObject-ã·ãªã¢ã«åãå¶åŸ¡ããããè¿œå æ å ±ãæžã蟌ã¿ãŸãã
2. readObject-éã·ãªã¢ã«åã®å¶åŸ¡çšã
3. writeReplace-ãªããžã§ã¯ãã眮ãæããŸãã ãã§ã«ã¹ããªãŒã ã«èšé²ãããŠããŸã
4. readResolve-ã¹ããªãŒã ãã埩å ãããªããžã§ã¯ãã®å®çŸ©ã
4. Externalizable-ãªããžã§ã¯ãã®ä¿åãšåŸ©å ã®æ©èœãããã°ã©ããå®çŸ©ããæ©èœã«å§ä»»ããã€ã³ã¿ãŒãã§ã€ã¹ã Externalizableã¯ãSerializableã€ã³ã¿ãŒãã§ã€ã¹ãæ¡åŒµããŸãã
ãã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ãããªããžã§ã¯ãã¯æ¬¡ã®ããšãè¡ãå¿ èŠããããŸãã
1.åŒæ°ãªãã®ãããªãã¯ã³ã³ã¹ãã©ã¯ã¿ãŒãããã
2.èªã¿åãããã³æžã蟌ã¿çšã«ããããwriteExternalããã³readExternalã¡ãœãããå®è£ ããŸãã
3.ãŸãããã®ãããªã¯ã©ã¹ã¯ã¡ãœãããå®è£ ã§ããŸãïŒãªãã·ã§ã³ïŒïŒ
-writeReplace-ãªããžã§ã¯ãã眮ãæããŸãã ãã§ã«ã¹ããªãŒã ã«èšé²ãããŠããŸã
-readResolve-ã¹ããªãŒã ãã埩å ãããªããžã§ã¯ãã®å®çŸ©ã
1. ObjectOutput-ãªããžã§ã¯ãã®ãæåãã·ãªã¢ã«åã®ããã®ã¹ããªãŒã ã€ã³ã¿ãŒãã§ã€ã¹ã ã¡ã€ã³ã¡ãœããwriteObjectïŒãªããžã§ã¯ãïŒ-ã¹ããªãŒã ãžã®ãªããžã§ã¯ãã®æžã蟌ã¿ãæžã蟌ã¿ïŒ...ïŒ-é åã®æžã蟌ã¿ããã©ãã·ã¥ïŒïŒ-ã¹ããªãŒã ã®ä¿åã ObjectOutputStreamã®åºæ¬çãªå®è£
2. ObjectInput-ã·ãªã¢ã«ååŸã«ãªããžã§ã¯ããæåã§åŸ©å ããããã®ã¹ããªãŒã ã€ã³ã¿ãŒãã§ã€ã¹ã ã¡ã€ã³ã®readObjectïŒïŒã¡ãœããã¯ãªããžã§ã¯ããèªã¿åããskipã¯nãã€ããã¹ãããããŠããŸãã ObjectInputStreamã®ã¡ã€ã³å®è£ ã
3. Serializable-ãªããžã§ã¯ãã®ã·ãªã¢ã«åããªããžã§ã¯ãã®ç¶æ ãèªåçã«ä¿åããã³åŸ©å ããã€ã³ã¿ãŒãã§ã€ã¹ã
ãã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ãããªããžã§ã¯ãã¯æ¬¡ã®ããšãè¡ãå¿ èŠããããŸãã
1.æãè¿ãéã·ãªã¢ã«åå¯èœãªç¥å ããã®åŒæ°ãªãã§ã³ã³ã¹ãã©ã¯ã¿ãŒã«ã¢ã¯ã»ã¹ã§ããŸãã
serialPersistentFieldsããã³transientã䜿çšããŠãã·ãªã¢ã«åå¯èœããã³éã·ãªã¢ã«åå¯èœãã£ãŒã«ããããŒã¯ããŸãã
ãŸãããã®ãããªã¯ã©ã¹ã¯ã¡ãœãããå®è£ ã§ããŸãïŒãªãã·ã§ã³ïŒïŒ
1. writeObject-ã·ãªã¢ã«åãå¶åŸ¡ããããè¿œå æ å ±ãæžã蟌ã¿ãŸãã
2. readObject-éã·ãªã¢ã«åã®å¶åŸ¡çšã
3. writeReplace-ãªããžã§ã¯ãã眮ãæããŸãã ãã§ã«ã¹ããªãŒã ã«èšé²ãããŠããŸã
4. readResolve-ã¹ããªãŒã ãã埩å ãããªããžã§ã¯ãã®å®çŸ©ã
4. Externalizable-ãªããžã§ã¯ãã®ä¿åãšåŸ©å ã®æ©èœãããã°ã©ããå®çŸ©ããæ©èœã«å§ä»»ããã€ã³ã¿ãŒãã§ã€ã¹ã Externalizableã¯ãSerializableã€ã³ã¿ãŒãã§ã€ã¹ãæ¡åŒµããŸãã
ãã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ãããªããžã§ã¯ãã¯æ¬¡ã®ããšãè¡ãå¿ èŠããããŸãã
1.åŒæ°ãªãã®ãããªãã¯ã³ã³ã¹ãã©ã¯ã¿ãŒãããã
2.èªã¿åãããã³æžã蟌ã¿çšã«ããããwriteExternalããã³readExternalã¡ãœãããå®è£ ããŸãã
3.ãŸãããã®ãããªã¯ã©ã¹ã¯ã¡ãœãããå®è£ ã§ããŸãïŒãªãã·ã§ã³ïŒïŒ
-writeReplace-ãªããžã§ã¯ãã眮ãæããŸãã ãã§ã«ã¹ããªãŒã ã«èšé²ãããŠããŸã
-readResolve-ã¹ããªãŒã ãã埩å ãããªããžã§ã¯ãã®å®çŸ©ã
IVã æ°åŠ
ãã®ãããã¯ã«é¢ãã質åã¯éåžžã«ãŸãã§ãïŒããæ£ç¢ºã«ã¯ããã®ãããã¯ã«é¢ããåäžã®è³ªåãèŠããŠããŸããïŒãã念ã®ããããããã«ã€ããŠèŠããŠãã䟡å€ããããŸãã
èªã...
Java SEã§æ°åŠèšç®ãå®è£
ããããã®ã¯ã©ã¹ã¯ãããã§ãã
1. java.lang.Math - StrictMathãšã¯ç°ãªããå€æ°ã®éçæ°åŠé¢æ°ãå«ãã¯ã©ã¹ -æ°åŠé¢æ°ã¯ãåãåŒæ°ã«å¯ŸããŠåžžã«æ£ç¢ºã«åãå€ãè¿ããšã¯éããŸããïŒå®æ°ã®å€ã¯éåžžã«å°ããå€ã§ç°ãªãå ŽåããããŸãïŒãããè¯ãããã©ãŒãã³ã¹ãéæããŸãã
2. java.lang.StrictMath-å€æ°ã®éçæ°åŠé¢æ°ãå«ãã¯ã©ã¹ã Mathãšã¯ç°ãªãã1ã€ã®åŒæ°ã«ã€ããŠãçµæã¯åžžã«ãŸã£ããåãã§ãã æ°åŠã«ãªãé¡äŒŒäœã®æ©èœãå«ãŸããŠããŸãã
3. java.math.BigDecimalããã³java.math.BigInteger-é«ã粟床ãšå¯žæ³ãå¿ èŠãšããæ°å€ãæäœããããã®ã¯ã©ã¹ã
4. java.math.MathContext -BigDecimalãŸãã¯BigIntegerã¯ã©ã¹ã§äœ¿çšã§ããèšå®ã
1. java.lang.Math - StrictMathãšã¯ç°ãªããå€æ°ã®éçæ°åŠé¢æ°ãå«ãã¯ã©ã¹ -æ°åŠé¢æ°ã¯ãåãåŒæ°ã«å¯ŸããŠåžžã«æ£ç¢ºã«åãå€ãè¿ããšã¯éããŸããïŒå®æ°ã®å€ã¯éåžžã«å°ããå€ã§ç°ãªãå ŽåããããŸãïŒãããè¯ãããã©ãŒãã³ã¹ãéæããŸãã
2. java.lang.StrictMath-å€æ°ã®éçæ°åŠé¢æ°ãå«ãã¯ã©ã¹ã Mathãšã¯ç°ãªãã1ã€ã®åŒæ°ã«ã€ããŠãçµæã¯åžžã«ãŸã£ããåãã§ãã æ°åŠã«ãªãé¡äŒŒäœã®æ©èœãå«ãŸããŠããŸãã
3. java.math.BigDecimalããã³java.math.BigInteger-é«ã粟床ãšå¯žæ³ãå¿ èŠãšããæ°å€ãæäœããããã®ã¯ã©ã¹ã
4. java.math.MathContext -BigDecimalãŸãã¯BigIntegerã¯ã©ã¹ã§äœ¿çšã§ããèšå®ã
V.åç §ãªããžã§ã¯ã
ããããåç §ãªããžã§ã¯ãã«ã€ããŠã¯çåããããéçºè ã¯éåžžã«ãã£ãã«äœ¿çšãããªããããéçºè ã¯ãããã«æµ®ãã¶ããšããããããŸãã åºæ¬çã«ããããã¯éåžžã®ã匷åãªããã€ã³ã¿ãããæè»ãªã¡ã¢ãªç®¡çã®ããã®ã¯ã©ã¹ã§ãã
èªã...
ããŸããŸãªåç
§ãªããžã§ã¯ããäœæã§ããã¯ã©ã¹ïŒ
1. åç § -é¡äŒŒãªããžã§ã¯ãã®æœè±¡ã¯ã©ã¹ã
2. SoftReference-空ãã¡ã¢ãªããªãããšãã¬ããŒãžã³ã¬ã¯ã¿ãŒãæ€åºãããšããœãããªã³ã¯ããªããžã§ã¯ããåé€ãããŸãã
3. WeakReference-匱ããªã³ã¯ã 次åãã¹ãããšãã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯ããã®ãããªãªã³ã¯ããã®ã¿ã¢ã¯ã»ã¹ã§ãããªããžã§ã¯ããåé€ããŸãã ãã£ãã·ã¥ããã³äžæãªããžã§ã¯ãã«äœ¿çšãããŸãã
4. PhantomReference-ãã¡ã³ãã ãªã³ã¯ãäœæããŸãããªã³ã¯èªäœã¯åžžã«nullãè¿ããŸããããªããžã§ã¯ããåé€ããåã«ããªã³ã¯ã¯ReferenceQueueãã¥ãŒã«çœ®ããããªããžã§ã¯ãã«é¢é£ä»ãããããªãœãŒã¹ã¯ãã®ãã¥ãŒããã€ãã¹ããŠè§£æŸã§ããŸãã
5. ReferenceQueue-ã¬ããŒãžã³ã¬ã¯ã¿ãŒãåç §ãããªããžã§ã¯ããåé€ãããšãã«ãªã³ã¯ãè¿œå ããããã¥ãŒã
1. åç § -é¡äŒŒãªããžã§ã¯ãã®æœè±¡ã¯ã©ã¹ã
2. SoftReference-空ãã¡ã¢ãªããªãããšãã¬ããŒãžã³ã¬ã¯ã¿ãŒãæ€åºãããšããœãããªã³ã¯ããªããžã§ã¯ããåé€ãããŸãã
3. WeakReference-匱ããªã³ã¯ã 次åãã¹ãããšãã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯ããã®ãããªãªã³ã¯ããã®ã¿ã¢ã¯ã»ã¹ã§ãããªããžã§ã¯ããåé€ããŸãã ãã£ãã·ã¥ããã³äžæãªããžã§ã¯ãã«äœ¿çšãããŸãã
4. PhantomReference-ãã¡ã³ãã ãªã³ã¯ãäœæããŸãããªã³ã¯èªäœã¯åžžã«nullãè¿ããŸããããªããžã§ã¯ããåé€ããåã«ããªã³ã¯ã¯ReferenceQueueãã¥ãŒã«çœ®ããããªããžã§ã¯ãã«é¢é£ä»ãããããªãœãŒã¹ã¯ãã®ãã¥ãŒããã€ãã¹ããŠè§£æŸã§ããŸãã
5. ReferenceQueue-ã¬ããŒãžã³ã¬ã¯ã¿ãŒãåç §ãããªããžã§ã¯ããåé€ãããšãã«ãªã³ã¯ãè¿œå ããããã¥ãŒã
VIã æ£èŠè¡šçŸ
ã€ã³ã¿ãã¥ãŒã§ã¯çãããããã¯ã§ãããèŠããŠãã䟡å€ããããŸãã
æ£èŠè¡šçŸãæäœããããã®2ã€ã®ã¡ã€ã³ã¯ã©ã¹ãš1ã€ã®ã€ã³ã¿ãŒãã§ã€ã¹ããããŸãã
1. ãã¿ãŒã³ -ãããã£ãŒã§äœ¿çšãããã³ã³ãã€ã«æžã¿æ£èŠè¡šçŸ
ãããã£ãŒ CharSequenceã§ã³ã³ãã€ã«æžã¿ã®æ£èŠè¡šçŸïŒPatternã¯ã©ã¹ïŒãå®è¡ããããã®ã¯ã©ã¹ã
2. MatchResult -Matcherã®çµæãè¿ãã®ã«åœ¹ç«ã¡ãŸã
VIIã ãã®ã³ã°
ãŸãããã®ãããã¯ã«é¢ãã質åãèŠããŠããŸããããSEã§æšæºã®ãã°èšé²ãç¹°ãè¿ãããšã¯äŸç¶ãšããŠæçšã§ãã
èªã...
åºæ¬çãªãã®ã³ã°ã¹ããŒã
å³ãããããããã«ããã®ã³ã°ã®éããã¬ãŒã¯ãã£ã«ã¿ãŒãé©çšãããã³ãã©ãŒã¡ãã»ãŒãžïŒãŸãã¯ãã³ãã©ãŒã®ãã§ãŒã³ïŒãéä¿¡ããŸããããã¯ããã£ã«ã¿ãŒãé©çšãããã©ãŒãããããã¡ãã»ãŒãžãå€éšã«éä¿¡ããŸãïŒã³ã³ãœãŒã«ã«è¡šç€ºããã¡ã€ã«ã«ä¿åãªã©ïŒ
åã¡ãã»ãŒãžã«ã¯ãFINESTããSEVEREãŸã§ã®ã¬ãã«ïŒã¬ãã«ã¯ã©ã¹ïŒãããã
Java SEã®ãã®ã³ã°ã¯ã©ã¹ã®äž»ãªã¿ã€ãïŒ
ç§ããã³ãã©ãŒ
Java SEã«ã¯ããã€ãã®ãã³ãã©ããããŸãã
1. StreamHandler -OutputStreamã«æžã蟌ã¿ã
2. ConsoleHandler - System.errãžã®æžã蟌ã¿ïŒã³ã³ãœãŒã«ïŒã
3. FileHandler-ãã¡ã€ã«ã«æžã蟌ã¿ã
4. SocketHandler -TCPããŒããžã®æžã蟌ã¿ã
5. MemoryHandler-ã¡ã¢ãªã«ãã°ãä¿åãã
IIããã©ãŒããã¿ãŒ
Java SEã¯ã2çš®é¡ã®ãã©ãŒããã¿ãŒãæäŸããŸãã
1. SimpleFormatter-人éãèªã¿åãã圢åŒã
2. XMLFormatter -XMLæ§é ã®ãã©ãŒããã
IIIã ãµãŒãã¹ã¯ã©ã¹
1. LogManager-LogManagerã¯ã©ã¹ã¯ããã¹ãŠã®ã·ã¹ãã ãã¬ãŒãšãã®ããããã£ã«é¢ããæ å ±ãä¿åããŸãã
2. LoggingPermissionã¯ã©ã¹ã¯ããã¬ãŒãªã©ãå€æŽããæš©éã決å®ããããã«äœ¿çšãããŸãã SecurityManagerã®å Žåã
3. Loggerã¯ã©ã¹ã䜿çšããŠã¡ãã»ãŒãžãèšé²ããLogRecordã¯ã©ã¹ã䜿çšããŠããã®ã³ã°ãã¬ãŒã ã¯ãŒã¯ãšãã³ãã©ãŒéã§ã¡ãã»ãŒãžã転éããŸãã
å³ãããããããã«ããã®ã³ã°ã®éããã¬ãŒã¯ãã£ã«ã¿ãŒãé©çšãããã³ãã©ãŒã¡ãã»ãŒãžïŒãŸãã¯ãã³ãã©ãŒã®ãã§ãŒã³ïŒãéä¿¡ããŸããããã¯ããã£ã«ã¿ãŒãé©çšãããã©ãŒãããããã¡ãã»ãŒãžãå€éšã«éä¿¡ããŸãïŒã³ã³ãœãŒã«ã«è¡šç€ºããã¡ã€ã«ã«ä¿åãªã©ïŒ
åã¡ãã»ãŒãžã«ã¯ãFINESTããSEVEREãŸã§ã®ã¬ãã«ïŒã¬ãã«ã¯ã©ã¹ïŒãããã
Java SEã®ãã®ã³ã°ã¯ã©ã¹ã®äž»ãªã¿ã€ãïŒ
ç§ããã³ãã©ãŒ
Java SEã«ã¯ããã€ãã®ãã³ãã©ããããŸãã
1. StreamHandler -OutputStreamã«æžã蟌ã¿ã
2. ConsoleHandler - System.errãžã®æžã蟌ã¿ïŒã³ã³ãœãŒã«ïŒã
3. FileHandler-ãã¡ã€ã«ã«æžã蟌ã¿ã
4. SocketHandler -TCPããŒããžã®æžã蟌ã¿ã
5. MemoryHandler-ã¡ã¢ãªã«ãã°ãä¿åãã
IIããã©ãŒããã¿ãŒ
Java SEã¯ã2çš®é¡ã®ãã©ãŒããã¿ãŒãæäŸããŸãã
1. SimpleFormatter-人éãèªã¿åãã圢åŒã
2. XMLFormatter -XMLæ§é ã®ãã©ãŒããã
IIIã ãµãŒãã¹ã¯ã©ã¹
1. LogManager-LogManagerã¯ã©ã¹ã¯ããã¹ãŠã®ã·ã¹ãã ãã¬ãŒãšãã®ããããã£ã«é¢ããæ å ±ãä¿åããŸãã
2. LoggingPermissionã¯ã©ã¹ã¯ããã¬ãŒãªã©ãå€æŽããæš©éã決å®ããããã«äœ¿çšãããŸãã SecurityManagerã®å Žåã
3. Loggerã¯ã©ã¹ã䜿çšããŠã¡ãã»ãŒãžãèšé²ããLogRecordã¯ã©ã¹ã䜿çšããŠããã®ã³ã°ãã¬ãŒã ã¯ãŒã¯ãšãã³ãã©ãŒéã§ã¡ãã»ãŒãžã転éããŸãã
Viiiã 䞊è¡æ§
èªã...
å¯èœãªè³ªå
- mainïŒïŒãJavaããã°ã©ã ã§æåŸã«çµäºããã¹ã¬ããã§ããããšã確èªããã«ã¯ã©ãããã°ããã§ããïŒ
- ã¹ã¬ããã¯ã©ã®ããã«çžäºäœçšããŸããïŒ
- ã¹ã¬ããéä¿¡ã¡ãœãããObjectã¯ã©ã¹ã«ããã®ã¯ãwaitïŒïŒãnotifyïŒïŒãnotifyAllïŒïŒããªãã§ããïŒ
- åæã¡ãœãããŸãã¯ãããã¯ããwaitïŒïŒãnotifyïŒïŒãnotifyAllïŒïŒã¡ãœãããåŒã³åºãå¿ èŠãããã®ã¯ãªãã§ããïŒ
- ã¹ã¬ããã¹ãªãŒãïŒïŒããã³yieldïŒïŒã¡ãœãããéçãªã®ã¯ãªãã§ããïŒ
- Javaã§ã¹ã¬ããã»ãŒããæäŸããæ¹æ³ã¯ïŒ
- Javaã®volatileããŒã¯ãŒããšã¯
- æšå¥šãããSynchronizedã¡ãœãããŸãã¯Synchronizedãããã¯ã¯äœã§ããïŒ
- ThreadLocalãšã¯äœã§ããïŒ
- ã¹ã¬ããã°ã«ãŒããšã¯äœã§ããïŒ ãããã䜿çšãã¹ãã§ããïŒ
- Java Thread Dumpãšã¯äœã§ãããJava Thread Dumpããã°ã©ã ãååŸããæ¹æ³ã¯ïŒ
- Javaã¿ã€ããŒã¯ã©ã¹ãšã¯äœã§ããïŒ ç¹å®ã®æéééåŸã«ã¿ã¹ã¯ãéå§ããæ¹æ³ã¯ïŒ
- ã¹ã¬ããããŒã«ãšã¯äœã§ããïŒ Javaã§ã¹ã¬ããããŒã«ãäœæããæ¹æ³
- Threadã¯ã©ã¹ã®runïŒïŒã¡ãœããããªãŒããŒã©ã€ããããªãå Žåã¯ã©ããªããŸããïŒ
ã¹ã¬ãã
èªã...
ããã»ã¹ãšã¹ã¬ãã -éãã¯ãããã»ã¹ã¯ç¬ç«ããã¢ããªã±ãŒã·ã§ã³ïŒOSãå¶åŸ¡ïŒã§ãããã¹ã¬ããã¯Javaã§ã®äžŠåå®è¡çšã®ç¬ç«ãã軜éã¹ã¬ããïŒJVMãšããã°ã©ããŒãå¶åŸ¡ïŒã§ãããšããããšã§ãã
ãã«ãã¹ã¬ããããã°ã©ãã³ã°ã®å©ç¹ -æ£ããèšè¿°ããããã«ãã¹ã¬ããã¢ããªã±ãŒã·ã§ã³ã¯ãè€æ°ã®ããã»ããµã®äœ¿çšã«ããé«éã«å®è¡ãããã¹ã¬ããã®1ã€ããªãœãŒã¹ã®åä¿¡ãåŸ æ©ããŠããéãããã»ããµã¯ã¢ã€ãã«ç¶æ ã«ãªããŸããã
ããŒã¢ã³ã¹ã¬ããã¯ããã¯ã°ã©ãŠã³ãã§å®è¡ãããã¹ã¬ããã§ãããJVMã¯ã·ã£ããããŠã³ããããã«çµäºããã®ãåŸ ã€å¿ èŠã¯ãããŸããã setDaemonïŒtrueïŒã䜿çšããŠä»»æã®ã¹ã¬ãããããŒã¢ã³ã«ããããšãã§ããŸããããã®ã¡ãœããã¯ãstartã§ã¹ã¬ãããéå§ããåã«åŒã³åºãå¿ èŠããããŸãã
ThreadGroupã¯ãã¹ã¬ããã°ã«ãŒãã«é¢ããæ å ±ãæäŸããå»æ¢ãããAPIã§ãã çŸåšã䜿çšã¯æšå¥šãããŠããŸããã
Java Thread Dump-ãã¹ãŠã®JVMã¹ã¬ããã®ç¶æ ã«é¢ããæ å ±ãååŸãããããããã¯ç¶æ ãŸãã¯ãã®ä»ã®ãã«ãã¹ã¬ããã®åé¡ãæ€çŽ¢ããŸãã Java Thread Dumpãçæããæ¹æ³ã¯å€æ°ãããŸããããšãã°ãJava 8ã§ã¯ãjcmdã³ãã³ãPID file_name for dumpãŸãã¯kill -3 PIDã䜿çšããŠããŸãã¯ä»»æã®ãããã¡ã€ã©ãŒïŒVisualVMãjstackãªã©ïŒã䜿çšããŠçæã§ããŸãã
Java SEã§ã¹ã¬ãããäœæããæ¹æ³ïŒ
1. Runnableã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããã¯ã©ã¹ãäœæããrunã¡ãœãããå®è£ ããstartã¡ãœããã§ã¹ã¬ãããéå§ããŸããrunã¡ãœãããæ£ããåŒã³åºãããªãããšã«æ³šæããŠãã ããããã®å Žåãæ°ããã¹ã¬ããã¯äœæãããŸããïŒåäœããŸãïŒã
2. Threadã¯ã©ã¹ããç¶æ¿ã¯ã©ã¹ãäœæããrunã¡ãœããããªãŒããŒã©ã€ãããstartã¡ãœããã§ã¹ã¬ãããéå§ããŸãã æ¹æ³1ãšã¯ç°ãªããThreadã¯ã©ã¹ã¯æ¢ã«å®çŸ©ãããå€æ°ã®ã¡ãœãããæäŸããŸãããã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ãããšæè»æ§ãé«ãŸããŸãïŒJavaã§ã¯å€éç¶æ¿ãã§ããªãããïŒã
3.ãšã°ãŒãã¥ãŒã¿ã䜿çšããŸããããã«ãããã¡ãœãã1-2ã®é«ã¬ãã«ã®é¡äŒŒç©ãæäŸãããŸãã
ã¹ã¬ããã¡ãœãã
1. ã¹ãªãŒã -æå®ããæéããŸãã¯ã¹ã¬ãããäžæãããªãã£ãç¬éãŸã§å®è¡ãåæ¢ããŸãã
2. å²ã蟌㿠-çµäºããå¿ èŠãããããšãã¹ã¬ããã«éä¿¡ããŸãïŒã¹ã¬ããã®ãœããå²ã蟌ã¿ïŒãã¹ã¬ããã¯ãã®ä¿¡å·ã®åŠçããµããŒãããå¿ èŠããããŸãïŒå®æçã«Thread.interruptedãã©ã°ã調ã¹ãããšã«ããïŒã
3. çµå -å¥ã®ã¹ã¬ããã®çµäºãŸãã¯ã¹ã¬ããåæ¢ä¿¡å·ãåŸ ã¡ãŸãã
4. synchronized-ã¡ãœãããŸãã¯åæãããã¯ã®åã®ããŒã¯ãŒãïŒãªã³ã¯ïŒ{...}
5. åŸ æ© -ã¹ã¬ãããåæ¢ããéç¥ãŸãã¯notifyAllã®åŒã³åºããåŸ æ©ããŸãã
6. åæ¢ ïŒå»æ¢ïŒ-ã¹ã¬ãããããã«åæ¢ããŸããå ±æå€æ°ã®ç¶æ ã誀ã£ãç¶æ ã«ãªãå¯èœæ§ããããããã¹ã¬ããã䜿çšããªãããšã匷ããå§ãããŸãã
7. ãµã¹ãã³ã ïŒéæšå¥šïŒããã³åéïŒéæšå¥šïŒ-ã¹ããªãŒã ãäžæçã«åæ¢ããŠåŸ©å ããŸãã éåžžã«é »ç¹ã«ãããããã¯ãçºçããããã䜿çšããããšã¯ãå§ãããŸããããyïŒäžæåæ¢äžã«ãªãœãŒã¹ã¯ãããã¯ããããŸãŸã«ãªããŸãïŒ
8. setUncaughtExceptionHandler-ãã®ã¹ããªãŒã ã«äŸå€ãã³ãã©ãŒãè¿œå ããæ©èœã
ã¹ã¬ããã®ç¹å¥ãªå€æ°ïŒ
ThreadLocal -1ã€ã®ã¹ã¬ããã®ã¿ã®ããŒã«ã«å€æ°ãåã¹ã¬ããã¯ãã®å€ãåç §ããŸãã
volatileã¯ããã¹ãŠã®ã¹ã¬ãããã¡ã¢ãªïŒããŒãïŒããèªã¿åãããã£ãã·ã¥ããªãå€æ°ãããŒã¯ããããŒã¯ãŒãã§ãã ããã¯ãã¹ãŠã®åæã®åé¡ã解決ããããã§ã¯ãããŸããããéåžžã®å€æ°ã¹ããªãŒã ã«ã¯ãã£ãã·ã¥ããæš©å©ããããé·æéæŽæ°ããæš©å©ã¯ãŸã£ãããããŸããã è€æ°ã®ã¹ã¬ããã§ããä¿¡é Œæ§ã®é«ãäœæ¥ãè¡ãã«ã¯ãã¢ãããã¯å€æ°ãŸãã¯åæãããã¯ã䜿çšããå¿ èŠããããŸãã
å¯èœãªè³ªå
- ããã»ã¹ãšã¹ã¬ããã®éãã¯äœã§ããïŒ
- ãã«ãã¹ã¬ããããã°ã©ãã³ã°ã®å©ç¹ã¯äœã§ããïŒ
- ãŠãŒã¶ãŒã¹ã¬ãããšããŒã¢ã³ã¹ã¬ããã®éãã¯äœã§ããïŒ
- Javaã§ã¹ã¬ãããäœæããæ¹æ³ã¯ïŒ
- ã¹ã¬ããã®ããŸããŸãªæ¡ä»¶ã¯äœã§ããïŒ
- Threadã¯ã©ã¹ã§runïŒïŒã¡ãœãããåŒã³åºãããšã¯å¯èœã§ããïŒ
- ç¹å®ã®æéã¹ã¬ãããåæ¢ããã«ã¯ã©ãããã°ããã§ããïŒ
- ã¹ã¬ããã®åªå 床ãšã¯äœã§ããïŒ
- ã¹ã¬ããã¹ã±ãžã¥ãŒã©ãšã¿ã€ã ã¹ã©ã€ã·ã³ã°ãšã¯äœã§ããïŒ
- ãã«ãã¹ã¬ããã®ã³ã³ããã¹ãåãæ¿ããšã¯äœã§ããïŒ
- Javaã§ããŒã¢ã³ã¹ã¬ãããäœæããæ¹æ³ã¯ïŒ
ããã»ã¹ãšã¹ã¬ãã -éãã¯ãããã»ã¹ã¯ç¬ç«ããã¢ããªã±ãŒã·ã§ã³ïŒOSãå¶åŸ¡ïŒã§ãããã¹ã¬ããã¯Javaã§ã®äžŠåå®è¡çšã®ç¬ç«ãã軜éã¹ã¬ããïŒJVMãšããã°ã©ããŒãå¶åŸ¡ïŒã§ãããšããããšã§ãã
ãã«ãã¹ã¬ããããã°ã©ãã³ã°ã®å©ç¹ -æ£ããèšè¿°ããããã«ãã¹ã¬ããã¢ããªã±ãŒã·ã§ã³ã¯ãè€æ°ã®ããã»ããµã®äœ¿çšã«ããé«éã«å®è¡ãããã¹ã¬ããã®1ã€ããªãœãŒã¹ã®åä¿¡ãåŸ æ©ããŠããéãããã»ããµã¯ã¢ã€ãã«ç¶æ ã«ãªããŸããã
ããŒã¢ã³ã¹ã¬ããã¯ããã¯ã°ã©ãŠã³ãã§å®è¡ãããã¹ã¬ããã§ãããJVMã¯ã·ã£ããããŠã³ããããã«çµäºããã®ãåŸ ã€å¿ èŠã¯ãããŸããã setDaemonïŒtrueïŒã䜿çšããŠä»»æã®ã¹ã¬ãããããŒã¢ã³ã«ããããšãã§ããŸããããã®ã¡ãœããã¯ãstartã§ã¹ã¬ãããéå§ããåã«åŒã³åºãå¿ èŠããããŸãã
ThreadGroupã¯ãã¹ã¬ããã°ã«ãŒãã«é¢ããæ å ±ãæäŸããå»æ¢ãããAPIã§ãã çŸåšã䜿çšã¯æšå¥šãããŠããŸããã
Java Thread Dump-ãã¹ãŠã®JVMã¹ã¬ããã®ç¶æ ã«é¢ããæ å ±ãååŸãããããããã¯ç¶æ ãŸãã¯ãã®ä»ã®ãã«ãã¹ã¬ããã®åé¡ãæ€çŽ¢ããŸãã Java Thread Dumpãçæããæ¹æ³ã¯å€æ°ãããŸããããšãã°ãJava 8ã§ã¯ãjcmdã³ãã³ãPID file_name for dumpãŸãã¯kill -3 PIDã䜿çšããŠããŸãã¯ä»»æã®ãããã¡ã€ã©ãŒïŒVisualVMãjstackãªã©ïŒã䜿çšããŠçæã§ããŸãã
Java SEã§ã¹ã¬ãããäœæããæ¹æ³ïŒ
1. Runnableã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããã¯ã©ã¹ãäœæããrunã¡ãœãããå®è£ ããstartã¡ãœããã§ã¹ã¬ãããéå§ããŸããrunã¡ãœãããæ£ããåŒã³åºãããªãããšã«æ³šæããŠãã ããããã®å Žåãæ°ããã¹ã¬ããã¯äœæãããŸããïŒåäœããŸãïŒã
2. Threadã¯ã©ã¹ããç¶æ¿ã¯ã©ã¹ãäœæããrunã¡ãœããããªãŒããŒã©ã€ãããstartã¡ãœããã§ã¹ã¬ãããéå§ããŸãã æ¹æ³1ãšã¯ç°ãªããThreadã¯ã©ã¹ã¯æ¢ã«å®çŸ©ãããå€æ°ã®ã¡ãœãããæäŸããŸãããã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ãããšæè»æ§ãé«ãŸããŸãïŒJavaã§ã¯å€éç¶æ¿ãã§ããªãããïŒã
3.ãšã°ãŒãã¥ãŒã¿ã䜿çšããŸããããã«ãããã¡ãœãã1-2ã®é«ã¬ãã«ã®é¡äŒŒç©ãæäŸãããŸãã
ã¹ã¬ããã¡ãœãã
1. ã¹ãªãŒã -æå®ããæéããŸãã¯ã¹ã¬ãããäžæãããªãã£ãç¬éãŸã§å®è¡ãåæ¢ããŸãã
2. å²ã蟌㿠-çµäºããå¿ èŠãããããšãã¹ã¬ããã«éä¿¡ããŸãïŒã¹ã¬ããã®ãœããå²ã蟌ã¿ïŒãã¹ã¬ããã¯ãã®ä¿¡å·ã®åŠçããµããŒãããå¿ èŠããããŸãïŒå®æçã«Thread.interruptedãã©ã°ã調ã¹ãããšã«ããïŒã
3. çµå -å¥ã®ã¹ã¬ããã®çµäºãŸãã¯ã¹ã¬ããåæ¢ä¿¡å·ãåŸ ã¡ãŸãã
4. synchronized-ã¡ãœãããŸãã¯åæãããã¯ã®åã®ããŒã¯ãŒãïŒãªã³ã¯ïŒ{...}
5. åŸ æ© -ã¹ã¬ãããåæ¢ããéç¥ãŸãã¯notifyAllã®åŒã³åºããåŸ æ©ããŸãã
6. åæ¢ ïŒå»æ¢ïŒ-ã¹ã¬ãããããã«åæ¢ããŸããå ±æå€æ°ã®ç¶æ ã誀ã£ãç¶æ ã«ãªãå¯èœæ§ããããããã¹ã¬ããã䜿çšããªãããšã匷ããå§ãããŸãã
7. ãµã¹ãã³ã ïŒéæšå¥šïŒããã³åéïŒéæšå¥šïŒ-ã¹ããªãŒã ãäžæçã«åæ¢ããŠåŸ©å ããŸãã éåžžã«é »ç¹ã«ãããããã¯ãçºçããããã䜿çšããããšã¯ãå§ãããŸããããyïŒäžæåæ¢äžã«ãªãœãŒã¹ã¯ãããã¯ããããŸãŸã«ãªããŸãïŒ
8. setUncaughtExceptionHandler-ãã®ã¹ããªãŒã ã«äŸå€ãã³ãã©ãŒãè¿œå ããæ©èœã
ã¹ã¬ããã®ç¹å¥ãªå€æ°ïŒ
ThreadLocal -1ã€ã®ã¹ã¬ããã®ã¿ã®ããŒã«ã«å€æ°ãåã¹ã¬ããã¯ãã®å€ãåç §ããŸãã
volatileã¯ããã¹ãŠã®ã¹ã¬ãããã¡ã¢ãªïŒããŒãïŒããèªã¿åãããã£ãã·ã¥ããªãå€æ°ãããŒã¯ããããŒã¯ãŒãã§ãã ããã¯ãã¹ãŠã®åæã®åé¡ã解決ããããã§ã¯ãããŸããããéåžžã®å€æ°ã¹ããªãŒã ã«ã¯ãã£ãã·ã¥ããæš©å©ããããé·æéæŽæ°ããæš©å©ã¯ãŸã£ãããããŸããã è€æ°ã®ã¹ã¬ããã§ããä¿¡é Œæ§ã®é«ãäœæ¥ãè¡ãã«ã¯ãã¢ãããã¯å€æ°ãŸãã¯åæãããã¯ã䜿çšããå¿ èŠããããŸãã
ã¢ãããã¯æäœãšã¯ã©ã¹
èªã...
ã¢ãããã¯æäœ -å®è¡ãããæäœãŸãã¯å®å šã«å®è¡ãããªãæäœã
次ã®ã¢ãããã¯æäœïŒ
1.ãªã³ã¯ããã³ããªããã£ãåã®èªã¿åããšæžã蟌ã¿ïŒlongããã³doubleãé€ãïŒ
2. volatileãšããŒã¯ããããã¹ãŠã®å€æ°ã®èªã¿åããšæžã蟌ã¿ïŒæžã蟌ã¿ãšèªã¿åãã¯çºçåé¢ä¿ãšããŠãã€ãŸãä¿èšŒãããæ¹æ³ã§å®è¡ãããããïŒã
æå°åãããåæãšãšã©ãŒã§ç°ãªãã¹ã¬ããã«å ±éã®å€æ°ãç°¡åã«äœæããããã®ååå€æ°ã 詳现ã«ã€ããŠã¯ã javadocãåç §ããŠãã ãã
å¯èœãªè³ªå
- Javaã®ã©ã®ã¿ã€ãã®ããŒã¿ã¯ããã«ãã¹ã¬ããã®èŠ³ç¹ããèªã¿åã/æžã蟌ã¿æäœã«ãšã£ãŠã¢ãããã¯ã§ããïŒ
- ã¢ãããã¯æäœãšã¯äœã§ããïŒ
- Java Concurrency APIã®ã©ã®ã¢ãããã¯ã¯ã©ã¹ãç¥ã£ãŠããŸããïŒ
ã¢ãããã¯æäœ -å®è¡ãããæäœãŸãã¯å®å šã«å®è¡ãããªãæäœã
次ã®ã¢ãããã¯æäœïŒ
1.ãªã³ã¯ããã³ããªããã£ãåã®èªã¿åããšæžã蟌ã¿ïŒlongããã³doubleãé€ãïŒ
2. volatileãšããŒã¯ããããã¹ãŠã®å€æ°ã®èªã¿åããšæžã蟌ã¿ïŒæžã蟌ã¿ãšèªã¿åãã¯çºçåé¢ä¿ãšããŠãã€ãŸãä¿èšŒãããæ¹æ³ã§å®è¡ãããããïŒã
æå°åãããåæãšãšã©ãŒã§ç°ãªãã¹ã¬ããã«å ±éã®å€æ°ãç°¡åã«äœæããããã®ååå€æ°ã 詳现ã«ã€ããŠã¯ã javadocãåç §ããŠãã ãã
掻åã®åé¡
èªã...
ãã«ãã¹ã¬ããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã®åé¡ïŒã©ã€ããã¹ã®åé¡ïŒïŒ
1. ãããããã¯-2ã€ã®ã¹ã¬ããã§2ã€ã®ç°ãªããªãœãŒã¹ããããã¯ãããªãªãŒã¹ãç¡éã«åŸ æ©ããŸãã
2ã 飢Star-ã¹ã¬ããã®1ã€ãé »ç¹ã«äœ¿çšããããªãœãŒã¹ãé·æéãããã¯ããæ®ãã®ã¹ã¬ããããªãªãŒã¹ãåŸ æ©ãã
3. ã©ã€ãããã¯-2ã€ã®ã¹ã¬ãããçžäºã®ã¢ã¯ã·ã§ã³ã«å¿ããŠåããªãœãŒã¹ã解æŸããŠå æããå Žåãå¿ èŠãªãªãœãŒã¹ããã¹ãŠååŸããŠå®è¡ãç¶ç¶ããããšã¯ã§ããŸããã
å¯èœãªè³ªå
- ãããããã¯ãšã¯äœã§ããïŒ ãããããã¯ãåæããŠåé¿ããæ¹æ³ã¯ïŒ
- ãããããã¯ä»¥å€ã«ãã«ãã¹ã¬ããã®åé¡ã¯ãããŸããïŒ
- 飢vãšã©ã€ãããã¯ãšã¯äœã§ããïŒ
ãã«ãã¹ã¬ããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã®åé¡ïŒã©ã€ããã¹ã®åé¡ïŒïŒ
1. ãããããã¯-2ã€ã®ã¹ã¬ããã§2ã€ã®ç°ãªããªãœãŒã¹ããããã¯ãããªãªãŒã¹ãç¡éã«åŸ æ©ããŸãã
2ã 飢Star-ã¹ã¬ããã®1ã€ãé »ç¹ã«äœ¿çšããããªãœãŒã¹ãé·æéãããã¯ããæ®ãã®ã¹ã¬ããããªãªãŒã¹ãåŸ æ©ãã
3. ã©ã€ãããã¯-2ã€ã®ã¹ã¬ãããçžäºã®ã¢ã¯ã·ã§ã³ã«å¿ããŠåããªãœãŒã¹ã解æŸããŠå æããå Žåãå¿ èŠãªãªãœãŒã¹ããã¹ãŠååŸããŠå®è¡ãç¶ç¶ããããšã¯ã§ããŸããã
äžå€ãªããžã§ã¯ãå®çŸ©æŠç¥
èªã...
äžå€ãªããžã§ã¯ããäœæããã«ã¯ã次ã®èŠåã«åŸãå¿
èŠããããŸãã
1.ãã»ãã¿ãŒãã¡ãœãããæäŸããªãã§ãã ããããã¹ãŠã®ãã£ãŒã«ãã¯æçµçãªãã©ã€ããŒãã§ãªããã°ãªããŸããã
2.ç¶æ¿è ãã¡ãœããããªãŒããŒã©ã€ãããªãããã«ããŸããããã¯ãã¯ã©ã¹ãfinalãšããŠå®çŸ©ããæãç°¡åãªæ¹æ³ã§ãã ããè€éãªæ¹æ³ã¯ãã³ã³ã¹ãã©ã¯ã¿ããã©ã€ããŒããšããŠå®çŸ©ãããã¡ã¯ããªã¡ãœããã䜿çšããŠãªããžã§ã¯ããäœæããããšã§ãã
3.å¯å€ãªããžã§ã¯ããžã®ãªã³ã¯ãæã€ãã£ãŒã«ããå«ããã£ãŒã«ãã§ã¯ãå€æŽãèš±å¯ããªãã§ãã ããã
4.å¯å€ãªããžã§ã¯ããå€æŽããã¡ãœãããæäŸããªãã§ãã ããã
5.å¿ èŠã«å¿ããŠãå¯å€ãªããžã§ã¯ããžã®ãªã³ã¯ãäžããªãã§ãã ãããã³ããŒãäœæãããªããžã§ã¯ãã®ã³ããŒã転éããŸãã
1.ãã»ãã¿ãŒãã¡ãœãããæäŸããªãã§ãã ããããã¹ãŠã®ãã£ãŒã«ãã¯æçµçãªãã©ã€ããŒãã§ãªããã°ãªããŸããã
2.ç¶æ¿è ãã¡ãœããããªãŒããŒã©ã€ãããªãããã«ããŸããããã¯ãã¯ã©ã¹ãfinalãšããŠå®çŸ©ããæãç°¡åãªæ¹æ³ã§ãã ããè€éãªæ¹æ³ã¯ãã³ã³ã¹ãã©ã¯ã¿ããã©ã€ããŒããšããŠå®çŸ©ãããã¡ã¯ããªã¡ãœããã䜿çšããŠãªããžã§ã¯ããäœæããããšã§ãã
3.å¯å€ãªããžã§ã¯ããžã®ãªã³ã¯ãæã€ãã£ãŒã«ããå«ããã£ãŒã«ãã§ã¯ãå€æŽãèš±å¯ããªãã§ãã ããã
4.å¯å€ãªããžã§ã¯ããå€æŽããã¡ãœãããæäŸããªãã§ãã ããã
5.å¿ èŠã«å¿ããŠãå¯å€ãªããžã§ã¯ããžã®ãªã³ã¯ãäžããªãã§ãã ãããã³ããŒãäœæãããªããžã§ã¯ãã®ã³ããŒã転éããŸãã
é«ã¬ãã«ã®ãã«ãã¹ã¬ããããŒã«
èªã...
å¯èœãªè³ªå
- Java Concurrency APIã®Lockã€ã³ã¿ãŒãã§ãŒã¹ãšã¯äœã§ããïŒ åæãšæ¯èŒããå Žåã®å©ç¹ã¯äœã§ããïŒ
- Executors Frameworkãšã¯äœã§ããïŒ
- BlockingQueueãšã¯äœã§ããïŒ ããããã³ã°ãã¥ãŒã䜿çšããŠçç£è ãšæ¶è²»è ã®åé¡ãåé¿ããæ¹æ³
- CallableãšFutureãšã¯äœã§ããïŒ
- FutureTaskã¯ã©ã¹ãšã¯äœã§ããïŒ
- Concurrent Collectionã¯ã©ã¹ãšã¯äœã§ããïŒ
- Executorsã¯ã©ã¹ãšã¯äœã§ããïŒ
- Java 8ã«ã¯ãåæå®è¡APIã®ã©ã®ãããªæ¹åç¹ããããŸããïŒ
èªã...
åæãããã¯ãªã©ãšã¯ç°ãªã , J8SE .
:
1. Task scheduling framework ( Executor) â , ..
2. ForkJoinPool â , Executors ExecutorService .. , ( work-stealing).
3. Lock â ,
4. Executors ,
5. â , (Concurrent Collection, BlockingQueue, java.util.concurrent .),
6. Atomic . javadoc
7. ThreadLocalRandom ( JDK 7) .
:
1. Task scheduling framework ( Executor) â , ..
2. ForkJoinPool â , Executors ExecutorService .. , ( work-stealing).
3. Lock â ,
4. Executors ,
5. â , (Concurrent Collection, BlockingQueue, java.util.concurrent .),
6. Atomic . javadoc
7. ThreadLocalRandom ( JDK 7) .
IXã äŸå€ãšãšã©ãŒ
èªã...
Java :
1. Error â , , , OutOfMemoryError. catch, .
2. Exception â , . :
â checked â Exception, catch throws ( Exception throws )
â unchecked â Exception, throws ,
:
1. Throwable â exception
1.1 Error â , ,
1.2 Exception â exception, checked exception ( RuntimeException)
1.2.1 RuntimeException â â unchecked exception,
Exception'. Exception , , NullPointerException ( , - ), ââ IllegalArgumentException ( , ).
- unchecked throws?
- , throws ?
- checked unchecked ?
- checked unchecked ?
- Exception Error?
- Exception?
- Error Throwable?
Java :
1. Error â , , , OutOfMemoryError. catch, .
2. Exception â , . :
â checked â Exception, catch throws ( Exception throws )
â unchecked â Exception, throws ,
:
1. Throwable â exception
1.1 Error â , ,
1.2 Exception â exception, checked exception ( RuntimeException)
1.2.1 RuntimeException â â unchecked exception,
Exception'. Exception , , NullPointerException ( , - ), ââ IllegalArgumentException ( , ).
X.è¡
èªã...
String , . , (immutable) (final), ( , , ), ( immutable, ), , , Map, immutable .
String â âabcâ, new (new String(»abc")) , StringBuffer StringBuilder.
String Pool (, ). C intern() .
StringBuffer StringBuilder , , StringBuffer , StringBuilder â , â StringBuilder .
...
- String Java? String â ?
- String ?
- ?
- SubSequence String?
- java-?
- char ?
- String ?
- switch ?
- String, StringBuffer StringBuilder?
- String immutable final Java
- java?
- Char String ?
- , Java?
- String Pool?
- string ()?
- Java?
- String HashMap Java?
String , . , (immutable) (final), ( , , ), ( immutable, ), , , Map, immutable .
String â âabcâ, new (new String(»abc")) , StringBuffer StringBuilder.
String Pool (, ). C intern() .
StringBuffer StringBuilder , , StringBuffer , StringBuilder â , â StringBuilder .
ãæž èŽããããšãããããŸããã ä»ã®ããŒãã·ãŒãã¯ç§ã®ãããã£ãŒã«ã§èŠã€ããããšãã§ããŸãã