import java.util.Iterator;
import java.util.List;
public class Main {
public static void main(String[] args) {
// 与ãˆã‚‰ã‚ŒãŸãƒªã‚¹ãƒˆ
List<String> colors = List.of("Red", "Green", "Blue", "Yellow", "Orange");
// イテレーターã®å–å¾—
Iterator<String> iterator = colors.iterator();
// イテレーターを使用ã—ã¦å„è¦ç´ ã‚’é †ç•ªã«è¡¨ç¤º
while (iterator.hasNext()) {
String color = iterator.next();
System.out.println(color);
}
}
}
イテレーターã®å–å¾—:
Iterator<String> iterator = colors.iterator();
iterator メソッドを使用ã—ã¦ã€ãƒªã‚¹ãƒˆ colors ã®ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ¼ã‚’å–å¾—ã—ã¾ã™ã€‚
イテレーターを使用ã—ã¦å„è¦ç´ ã‚’é †ç•ªã«è¡¨ç¤º:
while (iterator.hasNext()) {
String color = iterator.next();
System.out.println(color);
}
hasNext メソッドã¯ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ¼ãŒã¾ã 次ã®è¦ç´ ã‚’æŒã£ã¦ã„ã‚‹ã‹ã©ã†ã‹ã‚’確èªã—ã€next ãƒ¡ã‚½ãƒƒãƒ‰ã¯æ¬¡ã®è¦ç´ ã‚’å–å¾—ã—ã¾ã™ã€‚ã“れを繰り返ã™ã“ã¨ã§ã€ãƒªã‚¹ãƒˆå†…ã®å„è¦ç´ ãŒé †ç•ªã«è¡¨ç¤ºã•れã¾ã™ã€‚
ã“ã®ã‚³ãƒ¼ãƒ‰ã‚’実行ã™ã‚‹ã¨ã€ä¸Žãˆã‚‰ã‚ŒãŸãƒªã‚¹ãƒˆã®è¦ç´ ãŒé †ç•ªã«è¡¨ç¤ºã•れるã§ã—ょã†ã€‚イテレーターを使用ã™ã‚‹ã“ã¨ã§ã€è¦ç´ ã¸ã®é †ç•ªé€šã‚Šã®ã‚¢ã‚¯ã‚»ã‚¹ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚
イテレーターã®ä½¿ç”¨ã¨ãã®åˆ©ç‚¹
イテレーター(Iterator)ã¯ã€Javaã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ï¼ˆä¾‹: リストã€ã‚»ãƒƒãƒˆã€ãƒžãƒƒãƒ—ãªã©ï¼‰ã«ãŠã„ã¦ã€è¦ç´ ã«é †ç•ªã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã®ã‚¤ãƒ³ã‚¿ãƒ•ェースã§ã™ã€‚イテレーターã®åˆ©ç”¨ã«ã¯ã„ãã¤ã‹ã®åˆ©ç‚¹ãŒã‚りã¾ã™ã€‚
1. è¦ç´ ã¸ã®é †ç•ªé€šã‚Šã®ã‚¢ã‚¯ã‚»ã‚¹:
- イテレーターを使用ã™ã‚‹ã¨ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³å†…ã®è¦ç´ ã«é †ç•ªã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚
hasNextメソッドã¨nextメソッドを使用ã—ã¦ã€è¦ç´ ãŒå˜åœ¨ã—ã€ãれã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã‚‹é™ã‚Šç¶šã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
2. åŒæ™‚変更ã®é˜²æ¢:
- イテレーターを使用ã™ã‚‹ã¨ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’安全ã«å復処ç†ã§ãã¾ã™ã€‚通常ã®
for-eachループや添å—を使用ã—ã¦ã„ã‚‹é–“ã«ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ãŒå¤‰æ›´ã•れるã¨ConcurrentModificationExceptionãŒç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ãŒã€ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ¼ã‚’使用ã™ã‚‹ã¨ã“ã®ã‚ˆã†ãªå•題を回é¿ã§ãã¾ã™ã€‚
3. è¦ç´ ã®å‰Šé™¤ãŒå¯èƒ½:
- イテレーターを使用ã—ã¦ã„ã‚‹å ´åˆã€
removeメソッドを使用ã—ã¦è¦ç´ を削除ã§ãã¾ã™ã€‚ã“れã¯é€šå¸¸ã®for-eachループã§ã¯é›£ã—ã„æ“作ã§ã‚りã€ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ¼ã®åˆ©ç”¨ãŒå½¹ç«‹ã¡ã¾ã™ã€‚
4. ç•°ãªã‚‹ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚¿ã‚¤ãƒ—ã«å¯¾å¿œ:
- イテレーターã¯ã‚¤ãƒ³ã‚¿ãƒ•ェースã¨ã—ã¦å®Ÿè£…ã•れã¦ãŠã‚Šã€ç•°ãªã‚‹ç¨®é¡žã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«å¯¾ã—ã¦å…±é€šã®æ–¹æ³•ã§ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨æ€§ãŒå‘上ã—ã¾ã™ã€‚
5. èªã¿å–りã¨å‰Šé™¤ã®çµ±åˆ:
- イテレーターã¯
removeメソッドをæä¾›ã—ã¦ãŠã‚Šã€å復ä¸ã«è¦ç´ を削除ã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ç‰¹å®šã®æ¡ä»¶ã‚’満ãŸã™è¦ç´ を見ã¤ã‘ã¦å‰Šé™¤ã™ã‚‹éš›ã«éžå¸¸ã«ä¾¿åˆ©ã§ã™ã€‚
6. 一方å‘ãŠã‚ˆã³åŒæ–¹å‘アクセス:
- イテレーターã¯ä¸€èˆ¬çš„ã«ä¸€æ–¹å‘アクセスã§ã™ãŒã€
ListIteratorを使用ã™ã‚‹ã“ã¨ã§åŒæ–¹å‘アクセスもå¯èƒ½ã§ã™ã€‚ã“れã«ã‚ˆã‚Šã€ãƒªã‚¹ãƒˆã®è¦ç´ ã‚’å‰æ–¹ã¨å¾Œæ–¹ã«ç§»å‹•ã§ãã¾ã™ã€‚
イテレーターã¯ã€Javaã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³æ“作ã«ãŠã„ã¦éžå¸¸ã«å¼·åŠ›ã§æŸ”軟ãªãƒ„ールã§ã™ã€‚è¦ç´ ã«é †ç•ªã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã€åŒæ™‚変更を防ãŽã€è¦ç´ ã®è¿½åŠ ãƒ»å‰Šé™¤ãŒå¯èƒ½ãªã©ã€å¤šãã®åˆ©ç‚¹ãŒã‚りã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ãƒ‡ãƒ¼ã‚¿ã®å復処ç†ãŒå®‰å…¨ã‹ã¤åŠ¹æžœçš„ã«è¡Œãˆã¾ã™ã€‚
イテレーターをé©åˆ‡ã«æ´»ç”¨ã™ã‚‹ã“ã¨ã§ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³å†…ã®è¦ç´ ã«å¯¾ã™ã‚‹æ“作ãŒç°¡æ½”ã§åŠ¹çŽ‡çš„ã«ãªã‚Šã¾ã™ã€‚åŒæ™‚ã«ã€ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ¼ã¯ç•°ãªã‚‹ç¨®é¡žã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«å¯¾ã—ã¦å…±é€šã®æ‰‹æ³•ã‚’æä¾›ã—ã€ã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨æ€§ã‚’å‘上ã•ã›ã¾ã™ã€‚
ãƒ‡ãƒ¼ã‚¿æ§‹é€ ã®å復や変更ãŒé »ç¹ã«è¡Œã‚ã‚Œã‚‹å ´åˆã€ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ¼ã¯ãƒ—ãƒã‚°ãƒ©ãƒ ã®å“質をå‘上ã•ã›ã€ã‚³ãƒ¼ãƒ‰ã®ä¿å®ˆæ€§ã‚’高ã‚ã‚‹é‡è¦ãªãƒ„ールã¨ãªã‚Šã¾ã™ã€‚ãã®æŸ”軟性ã¨ãƒ‘フォーマンスã®å‘上を通ã˜ã¦ã€ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ¼ã¯Javaプãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã«ãŠã„ã¦ä¸å¯æ¬ ãªè¦ç´ ã¨ãªã‚Šã¾ã™ã€‚
「020 コレクションフレームワークã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント