コレクションフレームとリスト


集合フレームワークの理解

  • インスタンスを格納、削除、および参照する方法
  • アセンブリフレームのインタフェース



    Listインタフェースの集合クラスを実装します。


    古典的なListインタフェースを実現するクラス

  • ArrayList:アレイのデータ構造に基づいて、アレイストレージインスタンス
  • を使用する.
  • LinkedList:リストのデータ構造に基づいて、リストによりインスタンス
  • を保存する.

    Listインタフェースのクラスの特性を実現する

  • インスタンスを保持する格納順序
  • と同じインスタンスの重複ストレージを許可します.
  • 1. ArrayList

    public static void main(String[] args) {
            List<String> list = new ArrayList<>(); // 컬렉션 인스턴스 생성
    
            // 컬렉션 인스턴스에 문자열 인스턴스 저장
            list.add("Toy");
            list.add("Box");
            list.add("Robot");
    
            for(int i=0; i<list.size(); i++){
            System.out.print(list.get(i)+'\t');
            }
            System.out.println();
    
            list.remove(0);
            for(int i=0; i<list.size(); i++){
            System.out.print(list.get(i)+'\t');
            }
            System.out.println();
    }

    2. LinkedList

    public static void main(String[] args) {
            List<String> list = new LinkedList<>(); // 유일한 변화!
    
            // 컬렉션 인스턴스에 문자열 인스턴스 저장
            list.add("Toy");
            list.add("Box");
            list.add("Robot");
    
            for(int i=0; i<list.size(); i++){
            System.out.print(list.get(i)+'\t');
            }
            System.out.println();
    
            list.remove(0);
            for(int i=0; i<list.size(); i++){
            System.out.print(list.get(i)+'\t');
            }
            System.out.println();
    }

    Collectionのシーケンスアクセス方法


    1.強化for文の使用

    public static void main(String[]args){
            List<String> list = new LinkedList<>();
            
            // 인스턴스 저장
            list.add("Toy");
            list.add("Box");
            list.add("Robot");
            
            // 순차적 접근 방법 1
            for(String s : list)
                System.out.print(s + '\t');
    }

    2.重複文字の使用方法

  • 反復者:ターゲットオブジェクトに対して「個別」の役割を果たす.
  • public static void main(String[]args){
            List<String> list = new LinkedList<>();
    
            // 인스턴스 저장
            list.add("Toy");
            list.add("Box");
            list.add("Robot");
            
            // 반복자 생성
            Iterator<String> itr = list.iterator();
            
            // 반복자를 이용한 순차적 참조 1.
            while(iter.hasNext()){
                str = iter.next();
                System.out.print(str + '\t');
            }
            
            // 반복자를 이용한 순차적 참조 2.
            for(Iterator<String> itr = list.iterator(); itr.hasNext();){
                str = itr.next();
                System.out.print(n + '\t');
            }
    }
  • list.iterator():重複文字を作成し、
  • を返します.
  • iter.hasNext():何か戻るものはありますか.:ある場合はtrue、ない場合はfalse
  • iter.next():現在位置の値

    重複者の3つの方法

    を返します.
  • Iterator.next();//次の例の参照値
  • を返します.
  • Iterator.hasNext();//nextメソッドの呼び出し時に参照値
  • が戻るかどうか
  • Iterator.remove();//nextメソッドによって呼び出された返されたインスタンス(現在の位置を削除するインスタンス)

    双方向反復器の追加方法(ListIterator、リストのみ)。

  • を削除する.
  • ListIterator.previous();//next()メソッドは逆方向に移動し、参照値
  • に戻る.
  • ListIterator.hasPrevious();//hasNext()メソッドの逆ロール
  • add(E e);//インスタンス
  • を追加
  • set(E e);//インスタンス変更
  • 配列をArrayListに置き換える

    // asList로 생성된 list는 Immutable 인스턴스로, 변경 불가능하다.
    List<String> list = Arrays.asList("Toy", "Robot", "Box");
    
    // 생성자 public ArrayList(Collection<? extends E> c)를 통한 인스턴스 생성을 하면
    // 변경이 가능해진다.
    list = new ArrayList<>(list); // ArrayList로 변경
    list = new LinkedList<>(list); // LinkedList로 변경

    ソース

  • 尹聖祐熱血Java講の