import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
// ArrayList: å…ˆé ã«æ–°ã—ã„è¦ç´ "Cherry" を追åŠ
ArrayList<String> colorsArrayList = new ArrayList<>(Arrays.asList("Red", "Green", "Blue"));
colorsArrayList.add(0, "Cherry");
// リストã®è¡¨ç¤º
System.out.println("ArrayList: " + colorsArrayList);
// LinkedList: å…ˆé ã«æ–°ã—ã„è¦ç´ "Cherry" を追åŠ
LinkedList<String> colorsLinkedList = new LinkedList<>(Arrays.asList("Red", "Green", "Blue"));
colorsLinkedList.addFirst("Cherry");
// リストã®è¡¨ç¤º
System.out.println("LinkedList: " + colorsLinkedList);
}
}
- ArrayList:
add(0, "Cherry")を使用ã—ã¦ã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹0(先é ï¼‰ã«æ–°ã—ã„è¦ç´ “Cherry” ã‚’è¿½åŠ ã—ã¾ã™ã€‚addメソッドã®ç¬¬ä¸€å¼•æ•°ã«ã¯æŒ¿å…¥ã™ã‚‹ä½ç½®ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’指定ã—ã¾ã™ã€‚- リストã®å†…容を表示ã™ã‚‹ã¨ã€
["Cherry", "Red", "Green", "Blue"]ã¨ãªã‚Šã¾ã™ã€‚
- LinkedList:
addFirst("Cherry")を使用ã—ã¦ã€å…ˆé ã«æ–°ã—ã„è¦ç´ “Cherry” ã‚’è¿½åŠ ã—ã¾ã™ã€‚addFirstメソッドã¯ã€ãƒªãƒ³ã‚¯ãƒ‰ãƒªã‚¹ãƒˆã®å…ˆé ã«è¦ç´ ã‚’è¿½åŠ ã—ã¾ã™ã€‚- リストã®å†…容を表示ã™ã‚‹ã¨ã€
["Cherry", "Red", "Green", "Blue"]ã¨ãªã‚Šã¾ã™ã€‚
ã“れã«ã‚ˆã‚Šã€ãれãžã‚Œã®ãƒªã‚¹ãƒˆãŒè¦ç´ “Cherry” ãŒå…ˆé ã«è¿½åŠ ã•れãŸçŠ¶æ…‹ã§è¡¨ç¤ºã•れã¾ã™ã€‚リストã®å®Ÿè£…ã«ã‚ˆã‚‹é•ã„ãŒç¾ã‚Œã¦ã„ã¾ã™ã€‚ ArrayList ã¯è¦ç´ を指定ã—ãŸä½ç½®ã«æŒ¿å…¥ã™ã‚‹ã®ã«å¯¾ã—〠LinkedList ã¯å…ˆé ã«è¦ç´ ã‚’è¿½åŠ ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ãŒç”¨æ„ã•れã¦ã„ã¾ã™ã€‚
ArrayListã¨LinkedListã®é•ã„
ArrayList 㨠LinkedList ã¯ã€Javaã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ãƒ•レームワークã«ãŠã„ã¦ãƒªã‚¹ãƒˆã‚’実装ã™ã‚‹ãŸã‚ã®ã‚¯ãƒ©ã‚¹ã§ã‚りãªãŒã‚‰ã€å†…部ã®ãƒ‡ãƒ¼ã‚¿æ§‹é€ ã‚„æ“作ã®ç‰¹æ€§ãŒç•°ãªã‚Šã¾ã™ã€‚以下ã«ã€ä¸»ãªé•ã„ã«ã¤ã„ã¦è§£èª¬ã—ã¾ã™ã€‚
1. å†…éƒ¨ãƒ‡ãƒ¼ã‚¿æ§‹é€ :
- ArrayList:
- 内部ã§ã¯å‹•çš„é…列(Dynamic Array)を使用ã—ã¦è¦ç´ ã‚’æ ¼ç´ã—ã¾ã™ã€‚
- インデックスã«åŸºã¥ãランダムアクセスãŒé«˜é€Ÿã§ã€è¦ç´ ã®å–å¾—ãŒåŠ¹çŽ‡çš„ã§ã™ã€‚
- LinkedList:
- 内部ã§ã¯åŒæ–¹å‘リンクリスト(Doubly Linked List)を使用ã—ã¦è¦ç´ ã‚’æ ¼ç´ã—ã¾ã™ã€‚
- è¦ç´ ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã¯å‰å¾Œã®ãƒŽãƒ¼ãƒ‰ã‚’辿る必è¦ãŒã‚りã€ãƒ©ãƒ³ãƒ€ãƒ アクセスよりもé…ã„å ´åˆãŒã‚りã¾ã™ã€‚
2. 挿入ã¨å‰Šé™¤ã®åŠ¹çŽ‡:
- ArrayList:
- ä¸é–“ã¸ã®æŒ¿å…¥ã‚„削除ãŒé…ã„å ´åˆãŒã‚りã¾ã™ã€‚挿入や削除ã«éš›ã—ã¦ã€è¦ç´ ã®ç§»å‹•ãŒå¿…è¦ã§ã™ã€‚
- ãƒªã‚¹ãƒˆã®æœ«å°¾ã¸ã®è¦ç´ ã®è¿½åŠ ã¯æ¯”較的高速ã§ã™ã€‚
- LinkedList:
- ä¸é–“ã¸ã®æŒ¿å…¥ã‚„削除ãŒåŠ¹çŽ‡çš„ã§ã€ç‰¹ã«å…ˆé ã‚„ä¸é–“ã¸ã®è¦ç´ ã®è¿½åŠ ãƒ»å‰Šé™¤ãŒé«˜é€Ÿã§ã™ã€‚
- è¦ç´ ã®å‰å¾Œã¸ã®å‚ç…§ãŒã‚ã‚‹ãŸã‚ã€è¦ç´ ã®ç§»å‹•ãŒä¸è¦ã§ã™ã€‚
3. ãƒ©ãƒ³ãƒ€ãƒ ã‚¢ã‚¯ã‚»ã‚¹ã¨æ¤œç´¢ã®åŠ¹çŽ‡:
- ArrayList:
- インデックスを使用ã—ãŸãƒ©ãƒ³ãƒ€ãƒ アクセスãŒé€Ÿãã€æ¤œç´¢ãŒåŠ¹çŽ‡çš„ã§ã™ã€‚
- インデックスを指定ã™ã‚‹ã“ã¨ã§ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚
- LinkedList:
- ランダムアクセスãŒé…ãã€æ¤œç´¢ã‚‚é…ã„傾å‘ãŒã‚りã¾ã™ã€‚
- è¦ç´ ã«é †ç•ªã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ãŸã‚ã€åŠ¹çŽ‡ãŒä½Žä¸‹ã—ã¾ã™ã€‚
4. メモリ使用é‡:
- ArrayList:
- è¦ç´ ã®è¿½åŠ ã«ã¯ä¸€å®šã®ã‚µã‚¤ã‚ºã®é ˜åŸŸã‚’確ä¿ã—ã¾ã™ãŒã€å¿…è¦ãªåˆ†ã ã‘ã§ã¯ãªãã€ä½™åˆ†ãªé ˜åŸŸã‚’確ä¿ã™ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚
- LinkedList:
- å„è¦ç´ ãŒæ¬¡ã¨å‰ã®ãƒŽãƒ¼ãƒ‰ã¸ã®å‚ç…§ã‚’ä¿æŒã™ã‚‹ãŸã‚ã€ãƒ¡ãƒ¢ãƒªä½¿ç”¨é‡ãŒ
ArrayListよりも多ããªã‚ŠãŒã¡ã§ã™ã€‚
- å„è¦ç´ ãŒæ¬¡ã¨å‰ã®ãƒŽãƒ¼ãƒ‰ã¸ã®å‚ç…§ã‚’ä¿æŒã™ã‚‹ãŸã‚ã€ãƒ¡ãƒ¢ãƒªä½¿ç”¨é‡ãŒ
5. 使用ケース:
- ArrayList:
- è¦ç´ ã®ãƒ©ãƒ³ãƒ€ãƒ アクセスãŒé »ç¹ã«è¡Œã‚ã‚Œã‚‹å ´åˆã‚„ã€èªã¿å–りæ“作ãŒå¤šã„å ´åˆã«é©ã—ã¦ã„ã¾ã™ã€‚
- リストã®ã‚µã‚¤ã‚ºãŒå‹•çš„ã«å¤‰å‹•ã—ãªã„å ´åˆã«ã‚‚é©ã—ã¦ã„ã¾ã™ã€‚
- LinkedList:
- è¦ç´ ã®æŒ¿å…¥ã‚„削除ãŒé »ç¹ã«è¡Œã‚ã‚Œã‚‹å ´åˆã‚„ã€å¤§ããªãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆã«å¯¾ã—ã¦æŸ”è»Ÿãªæ“作ãŒå¿…è¦ãªå ´åˆã«é©ã—ã¦ã„ã¾ã™ã€‚
- サイズãŒé »ç¹ã«å¤‰å‹•ã™ã‚‹å ´åˆã«ã‚‚é©ã—ã¦ã„ã¾ã™ã€‚
状æ³ã«ã‚ˆã£ã¦é¸æŠžã•れるã¹ãã§ã‚りã€ã©ã¡ã‚‰ãŒå„ªã‚Œã¦ã„ã‚‹ã‹ã¯ä½¿ç”¨ã‚±ãƒ¼ã‚¹ã«ä¾å˜ã—ã¾ã™ã€‚ArrayList ã¯ãƒ©ãƒ³ãƒ€ãƒ アクセスãŒé€Ÿãã€ãƒ¡ãƒ¢ãƒªä½¿ç”¨é‡ãŒå°‘ãªã„一方ã§ã€LinkedList ã¯æŒ¿å…¥ã‚„削除ãŒåŠ¹çŽ‡çš„ã§ã™ã€‚使用ã™ã‚‹éš›ã«ã¯ã€ãれãžã‚Œã®ç‰¹æ€§ã‚’ç†è§£ã—ã¦ã€ã‚¿ã‚¹ã‚¯ã«æœ€é©ãªãƒ‡ãƒ¼ã‚¿æ§‹é€ ã‚’é¸æŠžã™ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚
ArrayListã¨LinkedListã¯ã€ãれãžã‚Œç•°ãªã‚‹åˆ©ç‚¹ã¨ç‰¹æ€§ã‚’æŒã¤ãƒ‡ãƒ¼ã‚¿æ§‹é€ ã§ã‚りã€ã©ã¡ã‚‰ã‚’é¸æŠžã™ã‚‹ã‹ã¯å…·ä½“çš„ãªä½¿ç”¨ã‚±ãƒ¼ã‚¹ã«ä¾å˜ã—ã¾ã™ã€‚ArrayListã¯ãƒ©ãƒ³ãƒ€ãƒ アクセスãŒé€Ÿãã€ãƒ¡ãƒ¢ãƒªä½¿ç”¨é‡ãŒæŠ‘ãˆã‚‰ã‚Œã‚‹ä¸€æ–¹ã§ã€LinkedListã¯æŒ¿å…¥ã‚„削除ãŒåŠ¹çŽ‡çš„ã§æŸ”è»Ÿãªæ“作ãŒå¯èƒ½ã§ã™ã€‚
プãƒã‚°ãƒ©ãƒ ã®è¦ä»¶ã‚„データアクセスパターンã«ã‚ˆã£ã¦æœ€é©ãªé¸æŠžãŒç•°ãªã‚Šã¾ã™ã€‚効率的ãªãƒ‡ãƒ¼ã‚¿æ“作を追求ã™ã‚‹éš›ã«ã¯ã€ãれãžã‚Œã®ç‰¹æ€§ã‚’ç†è§£ã—ã€é©åˆ‡ã«åˆ©ç”¨ã™ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚ArrayListã¨LinkedListã¯Javaã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ãƒ•レームワークã«ãŠã„ã¦ãƒªã‚¹ãƒˆã‚’実ç¾ã™ã‚‹å„ªã‚ŒãŸæ‰‹æ®µã§ã‚りã€ãƒ—ãƒã‚°ãƒ©ãƒžãŒé©åˆ‡ã«é¸æŠžã—活用ã™ã‚‹ã“ã¨ã§ã€ã‚ˆã‚ŠåŠ¹çŽ‡çš„ãªã‚¢ãƒ—リケーションを構築ã§ãã‚‹ã§ã—ょã†ã€‚
「020 コレクションフレームワークã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント