![](https://habrastorage.org/getpro/habr/post_images/257/c57/3cc/257c573cc29d1a30fd4741aca5077e05.png)
ãJavaã®åŠç¿ãéå§ããããã®æ¬ããšãã質åã«ããçããããŸããJavaã§èãããã«ãŒã¹ãšãã±ã«ã
ãããåé¡ã¯ããã®æ¬ïŒç¬¬4çïŒã«ã¯åç« ã®æåŸã«è³ªåãšå®è·µçãªäœæ¥ãå«ãŸããŠããªãããšã§ã...
ãŸãã«æãå¹æçãªèšèªåŠç¿ã«è²¢ç®ãããã®ã§ãïŒ
ãã®æ¬ã§å匷ããŠããéãç§ã¯èªåã«ãšã£ãŠæ°ãããŸãã¯èå³æ·±ãç¬éã«ã€ããŠå°ããªã¡ã¢ãäœæããŸããã ãããŠãããããçã質åã®åœ¢ã§èšèšããŸããã åç« ãèªãã åŸãç§ã¯ãã®ãªã¹ãã調ã¹ãŠãç« ã§äžããããã³ãŒãã«äŒŒãã¿ã¹ã¯ãæãã€ããã
ãããã®è³ªåããŒããå ±æããŠã¿ãŸãããïŒ
çŸåšã³ã³ãã€ã«ãããŠãã質åã®ãªã¹ããæäŸãããŸãã
ãå éšã¯ã©ã¹ãšã¯ããªã©ã®è³ªåããããŸããã ç§ã®æèŠã§ã¯ããã®ãããªå®çŸ©ã¯ç« ãèªããšãã«æ確ã«åœ¢æãããè£åŒ·ã®ããã«éå±ã§å¹³å¡ãªè³ªåãå¿ èŠãšããŸããã
ãã¹ã¿ãã¯ãšã¯ããªã©ã®è³ªåããããŸããã 圌ã®äœåã®ç¹åŸŽã¯äœã§ããïŒã ãããã¯ãå€ãã®èšèªããã³ããã°ã©ãã³ã°å šäœã®åºæ¬ã§ãã ãããã£ãŠãç§ã¯ããããé¿ããããšããŸããã
äžè¬çã«ãå®æçãªç¹°ãè¿ããå¿ èŠãšããããŸããŸãªèå³æ·±ã埮åŠããšãã¥ã¢ã³ã¹ã«é¢ãã質åãå®åŒåããããšããŸããã
ã¢ã³ã±ãŒãã®æåŸã«ã¯ãç§ãè¡ã£ãããã€ãã®æŒç¿èª²é¡ã®ç¿»èš³ããããæ¬ã®è±èªã®ãªãªãžãã«ã§åºçãããŠããŸãã ãããã®æŒç¿ãå°å·ãããŠããããŒãžã瀺ãããŠããŸãã
ãã·ã¢èªçã®ããŒãžçªå·ã質åãžã®åçã®ã»ãšãã©ã«è¿œå ãããŠããããšã«ãããªãã¯ããããé©ããèŠããã§ãããã ãããã®ããŒãžã«ã¯ãæèµ·ããã質åã«å¯Ÿããåçãå«ãŸããŠããŸãã
第10ç« å
éšã¯ã©ã¹
質åïŒ
1.å éšã¯ã©ã¹ã¯ãå€éšã¯ã©ã¹ã®ã©ã®ãã£ãŒã«ããšã¡ãœããã«ã¢ã¯ã»ã¹ã§ããŸããïŒ ã¯ã©ã¹ãéçãšå®£èšãããå Žåãçãã¯ã©ã®ããã«å€ãããŸããïŒ
2.å éšã¯ã©ã¹ã®ãªããžã§ã¯ããäœæããã³ãŒããèšè¿°ããŸãã å éšã¯ã©ã¹ãéçãšããŠå®£èšãããŠããå Žåããã®ã³ãŒãã¯ã©ã®ããã«å€ãããŸããïŒ
3.å éšã¯ã©ã¹ã®ã¡ãœããããå€éšã¯ã©ã¹ã®ã¡ãœãããåŒã³åºãã³ãŒããæäŸããŸãã
4.ã€ã³ã¿ãŒãã§ãŒã¹ã®å®è£ ã«é¢ããå éšã¯ã©ã¹ã®å¶éã¯äœã§ããïŒ
5.å éšã¯ã©ã¹ã¯å€éšãšåãã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ããå¿ èŠããããŸããïŒ
6.å¿åã¯ã©ã¹ã䜿çšããŠãã¡ã¯ããªãŒå®è£ ã³ãŒããèšè¿°ããŸãã
1.å éšã¯ã©ã¹ã¯ãå€éšã¯ã©ã¹ã®ã©ã®ãã£ãŒã«ããšã¡ãœããã«ã¢ã¯ã»ã¹ã§ããŸããïŒ ã¯ã©ã¹ãéçãšå®£èšãããå Žåãçãã¯ã©ã®ããã«å€ãããŸããïŒ
2.å éšã¯ã©ã¹ã®ãªããžã§ã¯ããäœæããã³ãŒããèšè¿°ããŸãã å éšã¯ã©ã¹ãéçãšããŠå®£èšãããŠããå Žåããã®ã³ãŒãã¯ã©ã®ããã«å€ãããŸããïŒ
3.å éšã¯ã©ã¹ã®ã¡ãœããããå€éšã¯ã©ã¹ã®ã¡ãœãããåŒã³åºãã³ãŒããæäŸããŸãã
4.ã€ã³ã¿ãŒãã§ãŒã¹ã®å®è£ ã«é¢ããå éšã¯ã©ã¹ã®å¶éã¯äœã§ããïŒ
5.å éšã¯ã©ã¹ã¯å€éšãšåãã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ããå¿ èŠããããŸããïŒ
6.å¿åã¯ã©ã¹ã䜿çšããŠãã¡ã¯ããªãŒå®è£ ã³ãŒããèšè¿°ããŸãã
第11ç« ãªããžã§ã¯ãã³ã¬ã¯ã·ã§ã³
ã質å
1. Collectionã€ã³ã¿ãŒãã§ãŒã¹ãšã¯äœã§ããïŒ
2.ã³ã³ããã䜿çšããŠããªããã£ããä¿åã§ããŸããïŒ
3.ã¢ã€ãã ãArrayListã³ã³ããã«è¿œå ããããã®å¥œãŸããæ¹æ³ã¯äœã§ããïŒ
Arrays.asListãŸãã¯Collections.addAllããã³ãã®çç±
4. ArrayListãæäœãããšãã«äœ¿çšã§ããããã€ãã®ã¡ãœããããªã¹ãããŸãã
5. Queueåã®ã³ã³ããã«å¯ŸããŠremoveïŒïŒã¡ãœããã¯äœãè¿ããŸããïŒ
6. LinkedListã䜿çšããå ŽåãArrayListãšæ¯èŒããŠé«éãªæäœã¯äœã§ããïŒ
7. LinkedListã䜿çšããŠã©ã®ãããªçš®é¡ã®ã³ã³ãããå®è£ ã§ããŸããïŒ
8. Setã³ã³ãããã¡ããªã¯ãListã³ã³ãããã¡ããªãšã©ã®ããã«ç°ãªããŸããïŒ ïŒç·šéããŠãããMrDã«æè¬ïŒ
9. Setã«æ¢ã«å«ãŸããŠããèŠçŽ ãSetã«è¿œå ããããšãããšãäŸå€ãçºçããŸããïŒ
10. PriorityQueueã³ã³ããã¯ãã¥ãŒãšã©ãéãã®ã§ããïŒ
11. PriorityQueueã«ç³ã蟌ãå ŽåãComparatorã¯äœã«äœ¿çšãããŸããïŒ
12.ã³ã³ããã¿ã€ãã»ããïŒTreeSetãHashSetãLinkedHashSetïŒã®å Žåãæ¥é èŸãTreeãããã³ãHashãããLinkedHashãã¯ã©ãããæå³ã§ãã
13. Mapã³ã³ããã¯Iterableã€ã³ã¿ãŒãã§ã€ã¹ããµããŒãããŠããŸããïŒ
14. foreachæ§æã¯Mapã³ã³ããã§æ©èœããŸããïŒ
15.å埩åã䜿çšããŠã³ã³ããèŠçŽ ã«ã¢ã¯ã»ã¹ããäž»ãªå©ç¹ã¯äœã§ããïŒ
16.éåžžã®ã€ãã¬ãŒã¿ãŒãšæ¯èŒããŠãListIteratorã€ãã¬ãŒã¿ãŒã«ãã£ãŠæäŸãããæ°ããæ©èœã¯äœã§ããïŒ
1. Collectionã€ã³ã¿ãŒãã§ãŒã¹ãšã¯äœã§ããïŒ
çã
Collectionã€ã³ã¿ãŒãã§ã€ã¹ã¯ããã¹ãŠã®ã·ãŒã±ã³ã·ã£ã«ã³ã³ããã®äžè¬çãªæ©èœïŒpã301ïŒãèšè¿°ããã«ãŒãã€ã³ã¿ãŒãã§ã€ã¹ã§ãã
2.ã³ã³ããã䜿çšããŠããªããã£ããä¿åã§ããŸããïŒ
çã
ããªããã£ãã¯ã³ã³ããã®èŠçŽ ãšããŠæ©èœã§ããŸããã ãªããžã§ã¯ããžã®åç
§ã®ã¿ãã³ã³ããã«é
眮ã§ããŸãã ãã ãããªãŒããã¯ã·ã³ã°ã¡ã«ããºã ã¯ãããªããã£ãããªããžã§ã¯ãã¿ã€ãã«èªåçã«å€æããŸãã ãããã£ãŠãããã°ã©ãã¯åè¿°ã®å¶éããå¿ãããããšãã§ããŸãã
ïŒ MrDãšãšãã«æäŸãããåç ïŒ
ïŒ MrDãšãšãã«æäŸãããåç ïŒ
3.ã¢ã€ãã ãArrayListã³ã³ããã«è¿œå ããããã®å¥œãŸããæ¹æ³ã¯äœã§ããïŒ
Arrays.asListãŸãã¯Collections.addAllããã³ãã®çç±
çã
Collections.addAllã¯ãããã©ãŒãã³ã¹ïŒpã282ïŒãé«ããããæšå¥šãããŸãã
4. ArrayListãæäœãããšãã«äœ¿çšã§ããããã€ãã®ã¡ãœããããªã¹ãããŸãã
çã
ãå«ãïŒãªããžã§ã¯ãoïŒã-é
åå
ã®èŠçŽ ã®ååšã確èªããŸãã
"IndexOfïŒObject oïŒ"-èŠçŽ ã®ã€ã³ããã¯ã¹ãååŸããŸãã
ãSubListïŒindex1ãindex2ïŒã-èŠçŽ ã®äžéšãæ°ããã³ã³ããã«ã³ããŒããŸãã
ãContainsAllïŒObject [] oïŒã-ã³ã³ããå ã®èŠçŽ ã®ååšã確èªããŸãã
"IndexOfïŒObject oïŒ"-èŠçŽ ã®ã€ã³ããã¯ã¹ãååŸããŸãã
ãSubListïŒindex1ãindex2ïŒã-èŠçŽ ã®äžéšãæ°ããã³ã³ããã«ã³ããŒããŸãã
ãContainsAllïŒObject [] oïŒã-ã³ã³ããå ã®èŠçŽ ã®ååšã確èªããŸãã
5. Queueåã®ã³ã³ããã«å¯ŸããŠremoveïŒïŒã¡ãœããã¯äœãè¿ããŸããïŒ
çã
Queue.removeïŒïŒã¡ãœããã¯ããã¥ãŒã®å
é èŠçŽ ãåé€ããã ãã§ãªãããã®æååå€ãè¿ããŸãã
6. LinkedListã䜿çšããå ŽåãArrayListãšæ¯èŒããŠé«éãªæäœã¯äœã§ããïŒ
çã
LinkedListã䜿çšãããšããªã¹ãã®äžå€®ããã®èŠçŽ ã®æ¿å
¥ãšåé€ãé«éã«ãªããŸãïŒpã291ïŒã
7. LinkedListã䜿çšããŠã©ã®ãããªçš®é¡ã®ã³ã³ãããå®è£ ã§ããŸããïŒ
çã
ã¹ã¿ãã¯ããã¥ãŒãåæ¹åãã¥ãŒã
8. Setã³ã³ãããã¡ããªã¯ãListã³ã³ãããã¡ããªãšã©ã®ããã«ç°ãªããŸããïŒ ïŒç·šéããŠãããMrDã«æè¬ïŒ
çã
Setã³ã³ãããã¡ããªã§ã¯ãããŒã¿ã¯1ã€ã®ã€ã³ã¹ã¿ã³ã¹ã«ã®ã¿ä¿åã§ããŸãïŒpã294ïŒ
9. Setã«æ¢ã«å«ãŸããŠããèŠçŽ ãSetã«è¿œå ããããšãããšãäŸå€ãçºçããŸããïŒ
çã
äŸå€ã¯çºçããŸããã
10. PriorityQueueã³ã³ããã¯ãã¥ãŒãšã©ãéãã®ã§ããïŒ
çã
PriorityQueueã®èŠçŽ ã¯ãç¹å®ã®èŠåã«åŸã£ãŠäžŠã¹æ¿ããããšãã§ããŸãã
11. PriorityQueueã«ç³ã蟌ãå ŽåãComparatorã¯äœã«äœ¿çšãããŸããïŒ
çã
ã³ã³ãã¬ãŒã¿ã䜿çšãããšãPriorityQueueèŠçŽ ã®äžŠã¹æ¿ãèŠåãæå®ã§ããŸãã
12.ã³ã³ããã¿ã€ãã»ããïŒTreeSetãHashSetãLinkedHashSetïŒã®å Žåãæ¥é èŸãTreeãããã³ãHashãããLinkedHashãã¯ã©ãããæå³ã§ãã
çã
æ¥é èŸãããªãŒãã¯ãã³ã³ããã®èŠçŽ ããœãŒããããé åºã§ä¿åãããããšãæå³ããŸãã
ïŒããšãã°ãã¢ã«ãã¡ãããé ãŸãã¯æé ïŒæ¥é èŸãããã·ã¥ãã¯ãã³ã³ãããããã·ã¥ãå®è£ ããŠéžæãé«éåããããšãæå³ããŸãã ãã¬ãã£ãã¯ã¹ãLinkedHashãã¯ãèŠçŽ ãæ¿å ¥é ã«ã³ã³ããã«ä¿åãããããšãæå³ããŸãããã¯ã€ãã¯ã¢ã¯ã»ã¹ïŒpã309ïŒãæäŸããŸã
ïŒããšãã°ãã¢ã«ãã¡ãããé ãŸãã¯æé ïŒæ¥é èŸãããã·ã¥ãã¯ãã³ã³ãããããã·ã¥ãå®è£ ããŠéžæãé«éåããããšãæå³ããŸãã ãã¬ãã£ãã¯ã¹ãLinkedHashãã¯ãèŠçŽ ãæ¿å ¥é ã«ã³ã³ããã«ä¿åãããããšãæå³ããŸãããã¯ã€ãã¯ã¢ã¯ã»ã¹ïŒpã309ïŒãæäŸããŸã
13. Mapã³ã³ããã¯Iterableã€ã³ã¿ãŒãã§ã€ã¹ããµããŒãããŠããŸããïŒ
çã
ã¿ã€ã "Map"ã®ã³ã³ããIterableã€ã³ã¿ãŒãã§ã€ã¹ã¯ãµããŒãããŠããŸããïŒpã305ïŒIterableã€ã³ã¿ãŒãã§ã€ã¹ããµããŒãããã¯ã©ã¹ã®ãªã¹ãïŒ
docs.oracle.com/javase/1.5.0/docs/api/java/lang/Iterable.html
docs.oracle.com/javase/1.5.0/docs/api/java/lang/Iterable.html
14. foreachæ§æã¯Mapã³ã³ããã§æ©èœããŸããïŒ
çã
Mapåã®ã³ã³ããã®å Žåãå埩å¯èœãªã€ã³ã¿ãŒãã§ã€ã¹ããµããŒãããŠããªããããforeachæ§æã¯æ©èœããŸããã
15.å埩åã䜿çšããŠã³ã³ããèŠçŽ ã«ã¢ã¯ã»ã¹ããäž»ãªå©ç¹ã¯äœã§ããïŒ
çã
ã€ãã¬ãŒã¿ã¯ãããŸããŸãªã¿ã€ãã®ã³ã³ããã«äœ¿çšã§ããŸãïŒpã290ïŒã
16.éåžžã®ã€ãã¬ãŒã¿ãŒãšæ¯èŒããŠãListIteratorã€ãã¬ãŒã¿ãŒã«ãã£ãŠæäŸãããæ°ããæ©èœã¯äœã§ããïŒ
çã
ListIteratorã¯ãã³ã³ããã®æåããæåŸãŸã§ã ãã§ãªãããã®éãåæ§ã«èŠçŽ ãžã®é 次ã¢ã¯ã»ã¹ãæäŸããŸãïŒpã290ïŒã
æŒç¿
11. 1. Fruitã¯ã©ã¹ãäœæããŸãã ãã®ã¯ã©ã¹ã«ã¯ãint weightãã£ãŒã«ãããã®ãã£ãŒã«ããåæåããã³ã³ã¹ãã©ã¯ã¿ãŒãããã³weightå€ãåºåããprintWeightïŒïŒã¡ãœãããå«ãŸããŠããå¿
èŠããããŸãã
mainã¡ãœããã§ãããã€ãã®Fruitãªããžã§ã¯ããListã³ã³ããã«è¿œå ããŸãã 次ã®æ¹æ³ã§ãåãªããžã§ã¯ãã«å¯ŸããŠprintWeightïŒïŒãåŒã³åºããŸãã
AïŒgetïŒïŒã¡ãœããã䜿çšããŸãã
BïŒã€ãã¬ãŒã¿ã䜿çšããŸãã
11.2ã 11.1ã®Fruitã¯ã©ã¹ããããã³ã³ãããŒã«é 眮ããŸãã ããŒãšããŠææè ã®ååããå€ãšããŠFruitã¿ã€ãã®ãªããžã§ã¯ãã瀺ããŸãã ããŒã§åFruitãªããžã§ã¯ããåæããèŠã€ãã£ããªããžã§ã¯ãã«å¯ŸããŠprintWeightïŒïŒã¡ãœãããåŒã³åºããŸãã ã€ãã¬ãŒã¿ã䜿çšããŸãã
11.3ã Comparator for PriorityQueueã䜿çšããŠãæååå€æ°ããµã€ãºã§ãœãŒããããŠããããšã確èªããŸãã
ãªãªãžãã«ã®æ¬ã®ç·Žç¿åé¡ã®ç¿»èš³ïŒ
11.4ã int gerbilNumberãã£ãŒã«ããæã€æ°ããã¹ãããºãã¯ã©ã¹ãäœæããŸãã ãã£ãŒã«ããã³ã³ã¹ãã©ã¯ã¿ãŒã«ãã£ãŠåæåãããããã«ããŸãã ãŸããããããã³ã°ããŠããã¹ãããºãã®æ°ïŒããšgerbilNumberå€æ°ã®å€ãåºåããhopïŒïŒã¡ãœãããäœæããŸãã ArrayListã³ã³ããã«Gerbilãªããžã§ã¯ããé 眮ããŸãã getïŒïŒã¡ãœãããå®è£ ããŠããããã®ãªããžã§ã¯ãããšã«åŒã³åºãããhopïŒïŒã¡ãœããã§ãªã¹ããå埩åŠçããŸãã
11.5ã SimpleCollection.javaãå€æŽããŠãcå€æ°ã«Setã¡ãœããã䜿çšããŸãã innerclasses / Sequence.javaãå€æŽããŠãããã«ä»»æã®æ°ã®èŠçŽ ãè¿œå ã§ããããã«ããŸãã
11.6ã ãæ°ã«å ¥ãã®æ ç»ã®ããŒããŒã®ååã®ãªã¹ãïŒStringåã®ãªããžã§ã¯ãïŒãå«ãGeneratorã¯ã©ã¹ãäœæããŸãã nextïŒïŒã¡ãœããã䜿çšããŠããã®ãªã¹ãã®åãªããžã§ã¯ããè¿ããŸãã äœæããããªã¹ãã®æåŸã«å°éãããããªã¹ãã®å é ã«æ»ãå¿ èŠããããŸãã
Generatorã¯ã©ã¹ã䜿çšããŠãArrayListãLinkedListãHashSetãLinkedHashSetãTreeSetãªã©ã®ã³ã³ããã«ããŒã¿ãå ¥åããŸãã åé åã®å 容ã衚瀺ããäžè¬çãªã¡ãœãããèšè¿°ããŸãã
11.7ã ListFeatures.javaãå€æŽããŠãPetåã®ãªããžã§ã¯ãã®ä»£ããã«Integeråã®ãªããžã§ã¯ãã䜿çšããããã«ããŸãã ãã®å€æŽã«ããããã©ãŒãã³ã¹ã®éãã説æããŸãã
11.8ã ListFeatures.javaã«ã€ããŠæŒç¿11.7ãç¹°ãè¿ããŸãããPetãStringsã«çœ®ãæããŸãã
11.9ã å¥ã®ã¯ã©ã¹ã®ãªããžã§ã¯ãã®åæåãããé åãçæããã¯ã©ã¹ãäœæããŸãã ãã®é åã䜿çšããŠãã¿ã€ãListã®ã³ã³ããã«å ¥åããŸãã ãªã¹ãã«subListïŒïŒã䜿çšããŠå¥ã®ã³ã³ãããäœæããŸãã 次ã«ãsubListïŒïŒã䜿çšããŠæœåºããã¢ã€ãã ããæœåºå ã®ã³ã³ãããŒããåé€ããŸãã
11.10ã ããŸããŸãªã³ã³ãããšãã®ã¡ãœããã®äœ¿çšã«é¢ããéã³å¿ã®ããç·Žç¿ïŒç¬ç«ããŠçºæãããïŒ
æåã«ãé£æãããè¬ããã嚯楜ãã®3ã€ã®èŠçŽ ã§æ§æãããè²»çšã®ãªã¹ãããããšããŸãã ãããã®èŠçŽ ãListã³ã³ããã«æžã蟌ãå¿ èŠãããããããã®é åºã¯å€ãããªãã¯ãã§ãã
mainã¡ãœããã§ãããã€ãã®Fruitãªããžã§ã¯ããListã³ã³ããã«è¿œå ããŸãã 次ã®æ¹æ³ã§ãåãªããžã§ã¯ãã«å¯ŸããŠprintWeightïŒïŒãåŒã³åºããŸãã
AïŒgetïŒïŒã¡ãœããã䜿çšããŸãã
BïŒã€ãã¬ãŒã¿ã䜿çšããŸãã
çã
// Fruit.java public class Fruit { private int weight = 0; public Fruit(int weight) { this.weight = weight; } public void printWeight() { System.out.println("Weight is: " + weight); } } // Apply.java import java.util.*; public class Apply { public static void main(String[] args) { List<Fruit> fruits = Arrays.asList(new Fruit(10), new Fruit(20)); // a System.out.println("Task a: "); for (Fruit f : fruits) { f.printWeight(); } // b System.out.println("Task b: "); Iterator<Fruit> it = fruits.iterator(); while(it.hasNext()) { it.next().printWeight(); } } }
11.2ã 11.1ã®Fruitã¯ã©ã¹ããããã³ã³ãããŒã«é 眮ããŸãã ããŒãšããŠææè ã®ååããå€ãšããŠFruitã¿ã€ãã®ãªããžã§ã¯ãã瀺ããŸãã ããŒã§åFruitãªããžã§ã¯ããåæããèŠã€ãã£ããªããžã§ã¯ãã«å¯ŸããŠprintWeightïŒïŒã¡ãœãããåŒã³åºããŸãã ã€ãã¬ãŒã¿ã䜿çšããŸãã
çã
ã³ã³ãã¯ããªã€ãã¬ãŒã¿ãœãªã¥ãŒã·ã§ã³ã®quarantinoã«æè¬ããŸãã
ãã«ãŒãã¯ã©ã¹-ã¿ã¹ã¯11.2ãåç §
ãã«ãŒãã¯ã©ã¹-ã¿ã¹ã¯11.2ãåç §
import java.util.*; import java.util.Map.Entry; public class Apply { public static void main(String[] args) { // HashMap, Map<String, Fruit> fruit = new HashMap<String, Fruit>(); fruit.put("Bob", new Fruit(10)); fruit.put("Mary", new Fruit(20)); // foreach System.out.println("With foreach"); for (String key : fruit.keySet()) { fruit.get(key).printWeight(); } // System.out.println("With iterator"); Iterator<Entry<String, Fruit>> it = fruit.entrySet().iterator(); while (it.hasNext()) { it.next().getValue().printWeight(); } } }
11.3ã Comparator for PriorityQueueã䜿çšããŠãæååå€æ°ããµã€ãºã§ãœãŒããããŠããããšã確èªããŸãã
çã
泚ïŒãã®äŸã¯ã€ã³ã¿ãŒãããããååŸãããã®ã§ãã
// StringComparator.java import java.util.Comparator; public class StringComparator implements Comparator<String> { @Override public int compare(String s1, String s2) { if (s1.length() < s2.length()) { return -1; } if(s1.length() > s2.length()) { return 1; } return 0; } } // PriorityQueue.java import java.util.Comparator; import java.util.PriorityQueue; public class PriorityQueueUse { public static void main(String[] args) { Comparator<String> comparator = new StringComparator(); PriorityQueue<String> queue = new PriorityQueue<String>(10, comparator); queue.add("abcde"); queue.add("abc"); queue.add("abcdefghi"); queue.add("a"); // String System.out.println("Before removing:"); System.out.println(queue); // String System.out.println(); System.out.println("Look at removing order: "); while (queue.size() != 0) { System.out.println(queue.remove()); } } }
ãªãªãžãã«ã®æ¬ã®ç·Žç¿åé¡ã®ç¿»èš³ïŒ
11.4ã int gerbilNumberãã£ãŒã«ããæã€æ°ããã¹ãããºãã¯ã©ã¹ãäœæããŸãã ãã£ãŒã«ããã³ã³ã¹ãã©ã¯ã¿ãŒã«ãã£ãŠåæåãããããã«ããŸãã ãŸããããããã³ã°ããŠããã¹ãããºãã®æ°ïŒããšgerbilNumberå€æ°ã®å€ãåºåããhopïŒïŒã¡ãœãããäœæããŸãã ArrayListã³ã³ããã«Gerbilãªããžã§ã¯ããé 眮ããŸãã getïŒïŒã¡ãœãããå®è£ ããŠããããã®ãªããžã§ã¯ãããšã«åŒã³åºãããhopïŒïŒã¡ãœããã§ãªã¹ããå埩åŠçããŸãã
11.5ã SimpleCollection.javaãå€æŽããŠãcå€æ°ã«Setã¡ãœããã䜿çšããŸãã innerclasses / Sequence.javaãå€æŽããŠãããã«ä»»æã®æ°ã®èŠçŽ ãè¿œå ã§ããããã«ããŸãã
11.6ã ãæ°ã«å ¥ãã®æ ç»ã®ããŒããŒã®ååã®ãªã¹ãïŒStringåã®ãªããžã§ã¯ãïŒãå«ãGeneratorã¯ã©ã¹ãäœæããŸãã nextïŒïŒã¡ãœããã䜿çšããŠããã®ãªã¹ãã®åãªããžã§ã¯ããè¿ããŸãã äœæããããªã¹ãã®æåŸã«å°éãããããªã¹ãã®å é ã«æ»ãå¿ èŠããããŸãã
Generatorã¯ã©ã¹ã䜿çšããŠãArrayListãLinkedListãHashSetãLinkedHashSetãTreeSetãªã©ã®ã³ã³ããã«ããŒã¿ãå ¥åããŸãã åé åã®å 容ã衚瀺ããäžè¬çãªã¡ãœãããèšè¿°ããŸãã
11.7ã ListFeatures.javaãå€æŽããŠãPetåã®ãªããžã§ã¯ãã®ä»£ããã«Integeråã®ãªããžã§ã¯ãã䜿çšããããã«ããŸãã ãã®å€æŽã«ããããã©ãŒãã³ã¹ã®éãã説æããŸãã
11.8ã ListFeatures.javaã«ã€ããŠæŒç¿11.7ãç¹°ãè¿ããŸãããPetãStringsã«çœ®ãæããŸãã
11.9ã å¥ã®ã¯ã©ã¹ã®ãªããžã§ã¯ãã®åæåãããé åãçæããã¯ã©ã¹ãäœæããŸãã ãã®é åã䜿çšããŠãã¿ã€ãListã®ã³ã³ããã«å ¥åããŸãã ãªã¹ãã«subListïŒïŒã䜿çšããŠå¥ã®ã³ã³ãããäœæããŸãã 次ã«ãsubListïŒïŒã䜿çšããŠæœåºããã¢ã€ãã ããæœåºå ã®ã³ã³ãããŒããåé€ããŸãã
11.10ã ããŸããŸãªã³ã³ãããšãã®ã¡ãœããã®äœ¿çšã«é¢ããéã³å¿ã®ããç·Žç¿ïŒç¬ç«ããŠçºæãããïŒ
æåã«ãé£æãããè¬ããã嚯楜ãã®3ã€ã®èŠçŽ ã§æ§æãããè²»çšã®ãªã¹ãããããšããŸãã ãããã®èŠçŽ ãListã³ã³ããã«æžã蟌ãå¿ èŠãããããããã®é åºã¯å€ãããªãã¯ãã§ãã
次ã«äœãèµ·ããŸãããïŒ
1ïŒããŒã³ã®æ¯æãã³ã¹ãããªã¹ãã«è¿œå ããã®ãå¿ããŠããããšã«çªç¶æ°ä»ããŸããã ã¬ã³ãŒãã€ã³ããã¯ã¹ãçŽæ¥äœ¿çšããã«ããé£åããšãè¬ãã®éã«ãçšãã¬ã³ãŒããé
眮ããå¿
èŠããããŸãã
2ïŒåŠ»ã¯ããã³ãŒããããã¬ã¹ãã©ã³ãã®ãšã³ããªãå«ãè¿œå ã®è²»çšãªã¹ããæã¡èŸŒã¿ãŸããã äœãããå¿ èŠã¯ãããŸããïŒãªã¹ãã®æåŸã«è²»çšãè¿œå ããŸãïŒèªåãå¹³ãã«ããªãããïŒã
3ïŒãããã矩çã®æ¯ã¯ç§ãã¡ã«ããå°ããã€ã³ãããããããŸããïŒãåå Žããã家ã®è£ 食ãããè¬ãã ãã¶ããããªãã¯ãã§ã«ãããã®ãã€ã³ãã®ããã€ããæã£ãŠããã§ãããã 念ã®ãããæåã®ã³ã³ããã®å 容ãSetã¿ã€ãã®æ°ããã³ã³ããã«ã³ããŒãããããããã«ãããã®æµè¡ããªã¹ãã®æåŸã«è¿œå ããŸãã
4ïŒããããããšãªããè²»çšããã<StringãInteger>ã®é£æ³åçãªã¹ããäœæããŸããã
5ïŒãã¹ãŠã®ã³ã¹ãã30ïŒ å¢ããããšã決å®ããŸããã ãããè¡ãã¡ãœãããäœæããŸãã
6ïŒãããŠïŒ ã家ã®è£ 食ãã§ååã§ãããããŠãããããã³ãŒãã£ã³ã°ããã®ã«æéãããããããŸãã ãããã®ã¢ã€ãã ãæ°ãããªã¹ãã«å ¥åããã¡ãœããã«æž¡ããŸãããã®ã·ãŒããèªã¿èŸŒããšããããã³ã³ãããŒã§å¯Ÿå¿ããçµè²»ã¢ã€ãã ãæ€çŽ¢ããã... 80ïŒ åæžãããŸãã
7ïŒçŸ©æ¯ã®è²»çšã®äžéšãæšãŠãŸãããã ããã«ã圌女ã«é©ããäžããŸãïŒ éå§ã€ã³ããã¯ã¹ãšçµäºã€ã³ããã¯ã¹ã決å®ãã2ã€ã®ä¹±æ°ãçæãããããã®éã®ãã¹ãŠã®è²»çšã¯å¥ã®ãªã¹ãã«èšé²ãããŸãïŒãªã¹ãã¯åŸã§ã¹ãªãããããŸãïŒã 察å¿ããæ¯åºé ç®ãæšãŠãŠãããããæŽæ°ããããšãå¿ããªãã§ãã ããã
8ïŒè²»çšã®æå°é¡ã決å®ããã¡ãœãããèšè¿°ãããããã®è²»çšã®ååãå°å·ããèªãããã«ãªã¹ããããã®ã¢ã€ãã ãåé€ããŸãã
9ïŒããããè¿œå ã®æ¶èåãç§ãã¡ãé§ãç«ãŠãŸãããå¥ã®é åã®åœ¢ã§è£ 食ããããé£ã¹ç©ããšãã¬ã¹ãã©ã³ãã§ãïŒ ãªã¹ãã«ãããã®ã¢ã€ãã ããããã©ããã確èªããŸããïŒ å°ãªããšã1ã€ã®è²»çšãããå Žåã¯ã決ããŠè¿œå ããŸããïŒ ãã®ããããååšããªãå ŽåïŒäœãå®è¡ã§ããªãïŒããããã®ãã€ã³ãã®äž¡æ¹ãäžåºŠã«è¿œå ããŸãïŒç§ã¯ç©ºè ¹ã§ãïŒïŒã
10ïŒç§ãã¡ã¯å€¢äžã§ãïŒ Map all Integerã®ãªã¹ãããæ®ãã®è²»çšã®åèšãèªã¿åããããããããããã³ã³ããã«æžã蟌ã¿ãæé ã§äžŠã¹æ¿ããæ¿æããŠããããæ··ããç¹å¥ãªã€ãã¬ãŒã¿ãå¿ æ»ã«äœ¿çšããŠéã®é åºã§ãã¹ã§åé€ããŸãã
2ïŒåŠ»ã¯ããã³ãŒããããã¬ã¹ãã©ã³ãã®ãšã³ããªãå«ãè¿œå ã®è²»çšãªã¹ããæã¡èŸŒã¿ãŸããã äœãããå¿ èŠã¯ãããŸããïŒãªã¹ãã®æåŸã«è²»çšãè¿œå ããŸãïŒèªåãå¹³ãã«ããªãããïŒã
3ïŒãããã矩çã®æ¯ã¯ç§ãã¡ã«ããå°ããã€ã³ãããããããŸããïŒãåå Žããã家ã®è£ 食ãããè¬ãã ãã¶ããããªãã¯ãã§ã«ãããã®ãã€ã³ãã®ããã€ããæã£ãŠããã§ãããã 念ã®ãããæåã®ã³ã³ããã®å 容ãSetã¿ã€ãã®æ°ããã³ã³ããã«ã³ããŒãããããããã«ãããã®æµè¡ããªã¹ãã®æåŸã«è¿œå ããŸãã
4ïŒããããããšãªããè²»çšããã<StringãInteger>ã®é£æ³åçãªã¹ããäœæããŸããã
5ïŒãã¹ãŠã®ã³ã¹ãã30ïŒ å¢ããããšã決å®ããŸããã ãããè¡ãã¡ãœãããäœæããŸãã
6ïŒãããŠïŒ ã家ã®è£ 食ãã§ååã§ãããããŠãããããã³ãŒãã£ã³ã°ããã®ã«æéãããããããŸãã ãããã®ã¢ã€ãã ãæ°ãããªã¹ãã«å ¥åããã¡ãœããã«æž¡ããŸãããã®ã·ãŒããèªã¿èŸŒããšããããã³ã³ãããŒã§å¯Ÿå¿ããçµè²»ã¢ã€ãã ãæ€çŽ¢ããã... 80ïŒ åæžãããŸãã
7ïŒçŸ©æ¯ã®è²»çšã®äžéšãæšãŠãŸãããã ããã«ã圌女ã«é©ããäžããŸãïŒ éå§ã€ã³ããã¯ã¹ãšçµäºã€ã³ããã¯ã¹ã決å®ãã2ã€ã®ä¹±æ°ãçæãããããã®éã®ãã¹ãŠã®è²»çšã¯å¥ã®ãªã¹ãã«èšé²ãããŸãïŒãªã¹ãã¯åŸã§ã¹ãªãããããŸãïŒã 察å¿ããæ¯åºé ç®ãæšãŠãŠãããããæŽæ°ããããšãå¿ããªãã§ãã ããã
8ïŒè²»çšã®æå°é¡ã決å®ããã¡ãœãããèšè¿°ãããããã®è²»çšã®ååãå°å·ããèªãããã«ãªã¹ããããã®ã¢ã€ãã ãåé€ããŸãã
9ïŒããããè¿œå ã®æ¶èåãç§ãã¡ãé§ãç«ãŠãŸãããå¥ã®é åã®åœ¢ã§è£ 食ããããé£ã¹ç©ããšãã¬ã¹ãã©ã³ãã§ãïŒ ãªã¹ãã«ãããã®ã¢ã€ãã ããããã©ããã確èªããŸããïŒ å°ãªããšã1ã€ã®è²»çšãããå Žåã¯ã決ããŠè¿œå ããŸããïŒ ãã®ããããååšããªãå ŽåïŒäœãå®è¡ã§ããªãïŒããããã®ãã€ã³ãã®äž¡æ¹ãäžåºŠã«è¿œå ããŸãïŒç§ã¯ç©ºè ¹ã§ãïŒïŒã
10ïŒç§ãã¡ã¯å€¢äžã§ãïŒ Map all Integerã®ãªã¹ãããæ®ãã®è²»çšã®åèšãèªã¿åããããããããããã³ã³ããã«æžã蟌ã¿ãæé ã§äžŠã¹æ¿ããæ¿æããŠããããæ··ããç¹å¥ãªã€ãã¬ãŒã¿ãå¿ æ»ã«äœ¿çšããŠéã®é åºã§ãã¹ã§åé€ããŸãã
第17ç« äžŠåå®è¡
1.ã¹ã¬ããã®startïŒïŒã¡ãœãããšrunïŒïŒã¡ãœããã®éãã説æããŸãã
2.ã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯ãå€æ°ã«æ ŒçŽãããŠããªããªã³ã¯ã®ã¹ããªãŒã ãåé€ããŸããïŒ
3.ããŒã¢ã³ã¹ã¬ãããšéåžžã®ã¹ã¬ããã®éãã¯äœã§ããïŒ
4.ããŒã¢ã³ã¹ã¬ããã«æ°ããã¹ã¬ãããçæãããŸãã ãã®ã¹ã¬ããã¯éåžžã®ã¹ã¬ããã§ãããããŒã¢ã³ã¹ã¬ããã§ããïŒ
5.ã¹ããªãŒã ã«å¯ŸããŠåŒã³åºãããjoinïŒïŒã¡ãœããã®ç®çã
6.äžæã«é¢ããã¢ãããã¯æäœãšã¯äœã§ããïŒ ã¢ãããã¯ããã³éã¢ãããã¯æäœã®äŸã瀺ããŸãã
7. synchronizedããŒã¯ãŒãã䜿çšããçç±
8.ãã¥ãŒããã¯ã¹ã®å®çŸ©ãæå®ããŸãã
9.åæãšããŠå®£èšãããã¡ãœããã䜿çšããŠãå ±æãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãèšå®ããæ¹æ³ãæããŠãã ããã
10. Lockãªããžã§ã¯ãã®ç®çã¯äœã§ããïŒ
11. lockïŒïŒåŒã³åºãã§try-catchãããã¯ãé 眮ããå¿ èŠããããŸããïŒ
12.åæãšããã¯ã䜿çšããå Žåã®å¶éã¯äœã§ããïŒ
çã
startïŒïŒã¯ãåŒã³åºããã¹ã¬ãããéå§ããã¡ãœããã§ãã ãã®ã¡ãœããã¯å®çŸ©ãå¿
èŠãšããŸããã
RunïŒïŒã¯ãstartïŒïŒãåŒã³åºãããåŸã«å®è¡ãããã¡ãœããã§ãã ãªãŒããŒã©ã€ããå¿ èŠã§ãããã¹ã¬ãããèµ·åãããç®çã®ããã®ã¿ã¹ã¯ã³ãŒããå«ãŸããŠããŸãã
RunïŒïŒã¯ãstartïŒïŒãåŒã³åºãããåŸã«å®è¡ãããã¡ãœããã§ãã ãªãŒããŒã©ã€ããå¿ èŠã§ãããã¹ã¬ãããèµ·åãããç®çã®ããã®ã¿ã¹ã¯ã³ãŒããå«ãŸããŠããŸãã
2.ã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯ãå€æ°ã«æ ŒçŽãããŠããªããªã³ã¯ã®ã¹ããªãŒã ãåé€ããŸããïŒ
New Thread(new ThreadTask()).start;
çã
åã¹ã¬ããã¯ããèªäœã§ç»é²ãããã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯ãããåé€ããæš©å©ããããŸããïŒpã560ïŒã
3.ããŒã¢ã³ã¹ã¬ãããšéåžžã®ã¹ã¬ããã®éãã¯äœã§ããïŒ
çã
ãã¹ãŠã®ã¡ã€ã³ã¹ã¬ãããå®äºãããšãããŒã¢ã³ã¹ã¬ãããäœæ¥ãå®äºããŸãã ãããã®ãããŒãã¿ã¹ã¯ãå®äºãããã©ããã¯é¢ä¿ãããŸããïŒpã568ïŒã
4.ããŒã¢ã³ã¹ã¬ããã«æ°ããã¹ã¬ãããçæãããŸãã ãã®ã¹ã¬ããã¯éåžžã®ã¹ã¬ããã§ãããããŒã¢ã³ã¹ã¬ããã§ããïŒ
çã
ãã®ã¡ãœããã¯ããŒã¢ã³ã¹ã¬ããïŒpã571ïŒã§ãã
5.ã¹ããªãŒã ã«å¯ŸããŠåŒã³åºãããjoinïŒïŒã¡ãœããã®ç®çã
çã
ã¹ã¬ããã®thread.joinïŒïŒã¡ãœããã¯ãå¥ã®ïŒçŸåšã®ïŒã¹ã¬ããããåŒã³åºãããšãã§ããŸãã ãã®çµæãçŸåšã®ã¹ã¬ããã¯æäœãäžæåæ¢ããŸãã thread.joinïŒïŒã¹ã¬ãããã¿ã¹ã¯ãå®äºãããšãçŸåšã®ã¹ã¬ãããåéããŸãïŒpã576ïŒ
6.äžæã«é¢ããã¢ãããã¯æäœãšã¯äœã§ããïŒ ã¢ãããã¯ããã³éã¢ãããã¯æäœã®äŸã瀺ããŸãã
çã
ã¢ãããã¯æäœã¯ãååãšããŠãäžæã®å¯èœæ§ãªãã«å®è¡ãããåçŽãªæäœã§ãã ã€ãŸãããã£ãŒã«ãã®äžéç¶æ
ãååŸããæ¹æ³ã¯ãããŸããã
ã¢ãããã¯æäœã®äŸïŒå²ãåœãŠãæ»ãå€ã
éã¢ãããã¯æäœã®äŸïŒå¢åãæžåïŒpã579ïŒ
ã¢ãããã¯æäœã®äŸïŒå²ãåœãŠãæ»ãå€ã
éã¢ãããã¯æäœã®äŸïŒå¢åãæžåïŒpã579ïŒ
7. synchronizedããŒã¯ãŒãã䜿çšããçç±
çã
å
±æãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ã«é¢é£ããã¹ã¬ããéã®ç«¶åãé²ãã«ã¯ïŒpã581ïŒ
8.ãã¥ãŒããã¯ã¹ã®å®çŸ©ãæå®ããŸãã
çã
Mutexã¯ã次ã®ããã«å®è£
ããããããããã¯ã¡ã«ããºã ã§ãã ã³ãŒãã¯ãããã¯ã»ã¯ã·ã§ã³ãšåŒã°ããã»ã¯ã·ã§ã³ã«é
眮ãããŸãã ãã®ã³ãŒãã¯ãäžåºŠã«1ã€ã®ã¹ã¬ããã®ã¿ãééããå¿
èŠããããŸãã ãã®ééäžã®å¥ã®ã¹ã¬ããã¯ãããããã³ã°ã»ã¯ã·ã§ã³ïŒpã581ïŒã«ã¢ã¯ã»ã¹ã§ããŸããã
9.åæãšããŠå®£èšãããã¡ãœããã䜿çšããŠãå ±æãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãèšå®ããæ¹æ³ãæããŠãã ããã
çã
å
±æãªãœãŒã¹ã¯ãªããžã§ã¯ãå
ã«é
眮ã§ããŸãã ããã«ããªãœãŒã¹ã«ã¢ã¯ã»ã¹ããã¡ãœããã¯ãã¹ãŠåææžã¿ãšããŠå®£èšãããŸãã ãã®ãããªã¡ãœããã®ããããã®å
éšã®ã¹ã¬ããã«ãã£ãŠç¹å®ã®ã¿ã¹ã¯ãå®è¡ãããŸãã åæã«ãä»ã®ãã¹ãŠã®ã¹ã¬ããã¯åæã¡ãœããã«å
¥ãããšãã§ããŸããã æåã®ã¹ã¬ããããããã®ã¡ãœããïŒpã582ïŒã®åŠçãçµäºããªãã£ãå Žåã«ã®ã¿ããããè¡ãããšãã§ããŸãã
10. Lockãªããžã§ã¯ãã®ç®çã¯äœã§ããïŒ
çã
ããã¯ãªããžã§ã¯ãã¯ããã¥ãŒããã¯ã¹ãæ瀺çã«ç®¡çããããã«èšèšãããŠããŸãã ããã°ã©ã ã§æ瀺çã«äœæããããã®ãããªãªããžã§ã¯ãã䜿çšãããšãããã¯ãèšå®ãŸãã¯åé€ã§ããŸãïŒpã583ïŒã
11. lockïŒïŒåŒã³åºãã§try-catchãããã¯ãé 眮ããå¿ èŠããããŸããïŒ
çã
ãã®ãããªãŠããããé
眮ããå¿
èŠããããŸãã ããã«ãfinallyã»ã¯ã·ã§ã³ãè¿œå ããããšããå§ãããŸãã ãã®ã»ã¯ã·ã§ã³ã§ã¯ãunlockïŒïŒãåŒã³åºãå¿
èŠããããŸãã ããã«ãããäŸå€ãçºçããå Žåã«ããã¯ã解é€ãããŸãã
12.åæãšããã¯ã䜿çšããå Žåã®å¶éã¯äœã§ããïŒ
çã
åæã䜿çšãããšã倱æããçµæã®ããã¯ãååŸã§ããŸããã äžå®æéããã¯ãååŸããããšãã§ããŸããããã®åŸãé害ãçºçããå¯èœæ§ããããŸãïŒpã584ïŒã
æŒç¿
1.ä»»æã®ã¯ã©ã¹ã«Runnableã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããŸãã
ãªãŒããŒã©ã€ããããrunïŒïŒã¡ãœããå ã§ãã¡ãã»ãŒãžãå ¥åããŸãã ãã®åŸãyieldïŒïŒãåŒã³åºããŸãã äžèšã®2ã€ã®ã¹ãããã3åç¹°ãè¿ããŠãããrunïŒïŒã¡ãœãããå®äºããŸãã
ã³ã³ã¹ãã©ã¯ã¿ãŒã®éå§ã瀺ãã¡ãã»ãŒãžãã³ã³ã¹ãã©ã¯ã¿ãŒã®å é ã«çœ®ããŸãã ãŸããã¹ããªãŒã ã®å®äºã瀺ãã¡ãã»ãŒãžãå ¥ããŸãã ãã®ãããªã¿ã¹ã¯ãããã€ãäœæããè€æ°ã®ã¹ããªãŒã ã䜿çšããŠãããã解決ããŸãïŒå ã®pã826ïŒã
2.圢åŒgenerics / Fibonacci.javaã«åŸã£ãŠãnåã®ãã£ããããæ°åãçæããã¿ã¹ã¯ãäœæããŸãã ããã«ããã®ã¿ã¹ã¯ã®ã³ã³ã¹ãã©ã¯ã¿ãŒã«nãæž¡ãå¿ èŠããããŸãã ãã®ãããªã¿ã¹ã¯ãããã€ãäœæããè€æ°ã®ã¹ããªãŒã ã䜿çšããŠãããã解決ããŸãïŒå ã®804ããŒãžïŒã
3.ããŸããŸãªã¿ã€ãã®ãšã°ãŒãã¥ãŒã¿ãŒã䜿çšããŠãæŒç¿1ãš2ãç¹°ãè¿ããŸãïŒå ã®pã804ïŒã
4. Callableããã¹ãŠã®ãã£ããããæ°ãèŠçŽããããã«ãæŒç¿2ãä¿®æ£ããŸãã ãã®ãããªã¿ã¹ã¯ãããã€ãäœæãããããã®åé¡ã解決ããçµæãå°å·ããŸãïŒãªãªãžãã«ã®807ããŒãžïŒã
ãªãŒããŒã©ã€ããããrunïŒïŒã¡ãœããå ã§ãã¡ãã»ãŒãžãå ¥åããŸãã ãã®åŸãyieldïŒïŒãåŒã³åºããŸãã äžèšã®2ã€ã®ã¹ãããã3åç¹°ãè¿ããŠãããrunïŒïŒã¡ãœãããå®äºããŸãã
ã³ã³ã¹ãã©ã¯ã¿ãŒã®éå§ã瀺ãã¡ãã»ãŒãžãã³ã³ã¹ãã©ã¯ã¿ãŒã®å é ã«çœ®ããŸãã ãŸããã¹ããªãŒã ã®å®äºã瀺ãã¡ãã»ãŒãžãå ¥ããŸãã ãã®ãããªã¿ã¹ã¯ãããã€ãäœæããè€æ°ã®ã¹ããªãŒã ã䜿çšããŠãããã解決ããŸãïŒå ã®pã826ïŒã
2.圢åŒgenerics / Fibonacci.javaã«åŸã£ãŠãnåã®ãã£ããããæ°åãçæããã¿ã¹ã¯ãäœæããŸãã ããã«ããã®ã¿ã¹ã¯ã®ã³ã³ã¹ãã©ã¯ã¿ãŒã«nãæž¡ãå¿ èŠããããŸãã ãã®ãããªã¿ã¹ã¯ãããã€ãäœæããè€æ°ã®ã¹ããªãŒã ã䜿çšããŠãããã解決ããŸãïŒå ã®804ããŒãžïŒã
3.ããŸããŸãªã¿ã€ãã®ãšã°ãŒãã¥ãŒã¿ãŒã䜿çšããŠãæŒç¿1ãš2ãç¹°ãè¿ããŸãïŒå ã®pã804ïŒã
4. Callableããã¹ãŠã®ãã£ããããæ°ãèŠçŽããããã«ãæŒç¿2ãä¿®æ£ããŸãã ãã®ãããªã¿ã¹ã¯ãããã€ãäœæãããããã®åé¡ã解決ããçµæãå°å·ããŸãïŒãªãªãžãã«ã®807ããŒãžïŒã
質åãšæŒç¿ã¯ãã³ã³ãã€ã«ããã³ç¿»èš³ããããã³ã«å®æçã«è¿œå ãããŸãã ãã®ãããªè¿œå ã¯ãããããèšäºã®æåŸã«èšè¿°ããïŒãæŽæ°ããå±éïŒãã³ã¡ã³ãã«èšè¿°ãããŸãã
ç« ãé çªã«è¿œå ãããããšãä¿èšŒã§ããŸããã ããšãã°ã第11ç« ã®ã¢ã³ã±ãŒãã®åŸã«ã17æ¥ã®ã¢ã³ã±ãŒãã衚瀺ãããå ŽåããããŸãã
質åã®æºåãšæ¬ã®ç« ã«é¢ããã¯ãŒã¯ã·ã§ããã«ãåå ããŠãã ããïŒ
åå ãåžæãããæ¹ã¯ãããã€ã¢ãã°ãã«æžããŠãã ããã 10çªãŸã§ã®ç« ã«é¢ãã質åãæŒç¿ã¯å ¬éããªãããšãããã«ãç¥ããããŸãïŒãã®è³æã¯æ¢ã«åŠç¿æžã¿ã§ãïŒã
圹ç«ã€æ å ±ïŒ
è±èªã®ãªãªãžãã«ã®Javaã§ã®æèã§ã¯ãæŒç¿ã¯ãã©ã°ã©ãã®åŸã«äžããããŸãïŒããããšãã iflista ïŒ
è±èªçã® ãJavaã§èããããã®æ³šéä»ããœãªã¥ãŒã·ã§ã³ã¬ã€ããã¯ããããã®æŒç¿ã«å¯Ÿãããœãªã¥ãŒã·ã§ã³ãæäŸããŠããŸãïŒããããšãã WraithOW ïŒã
åç §ïŒ
Oracleã®JavaåŠç¿è³æãšã¿ã¹ã¯ïŒè±èªïŒ
docs.oracle.com/javase/tutorial/java/index.html
æŽæ°æ
å ±
æŽæ°1ïŒ2014幎2æ15æ¥ïŒïŒç¬¬11ç« ã®è³ªåãåèšèšãã質åãžã®åçãè¿œå ããŸããã 第11ç« ã«3ã€ã®æŒç¿ãè¿œå ïŒããããšãã以åã®çãããããã®äžéšãåãããšããã¢ã€ãã¢ã«æè¬ïŒ
æŽæ°2ïŒ2014幎2æ18æ¥ïŒïŒè³ªåãšæŒç¿ã®äžéšã第17ç« ã«è¿œå ãããŸãããæ®ãã®éšåã¯åŸã§å ¬éãããŸãã
æŽæ°2ïŒ2014幎2æ18æ¥ïŒïŒè³ªåãšæŒç¿ã®äžéšã第17ç« ã«è¿œå ãããŸãããæ®ãã®éšåã¯åŸã§å ¬éãããŸãã