CF 03 ArrayListクラス

27186 ワード

ArrayList

  • 既存のVectorとの違い:同期X(ArrayList)、同期O(Vector)
  • Listインタフェースを実装し、記憶順序を維持し、繰り返しを許可することができる.
  • アレイに基づく
  • は、任意の種類のオブジェクト
  • を記憶することができる.
  • 個のオブジェクトしか保存できませんが、基本型を自動的に埋め込むこともできます.
  • 生成者

  • ArrayList()
  • ArrayList(Collectoin c)
  • 記憶
  • 集合cにおけるオブジェクト
  • ArrayList(int initialCapacity)
  • 初期容量:配列の長さ.初期容量
  • 方法


    追加

  • boolean add(Object o)
  • オブジェクトoを
  • セットに追加し、変化がある場合はtrue
  • とする.
    list1.add(new Integer(1));	//원칙
    list1.add(1);			//오토박싱
  • void add(int index, Object element)
  • コレクションでは、オブジェクト要素をコレクションの指定位置(インデックス)
  • に追加する.
  • 以降indexのオブジェクトは
  • に後退する.
  • boolean addAll(Collection c)
  • コレクションにコレクションcのオブジェクトを追加し、変更がある場合はtrue
  • とする.
  • boolean addAll(int index, Collection c)
  • コレクションでは、指定された位置(インデックス)にコレクションcに含まれるオブジェクトを追加します.
  • はtrue
  • に変化する.

    削除

  • boolean remove(Object o)

  • コレクションに保存されているオブジェクトoを削除し、後ろから空白をドラッグ&ドロップします.

  • 変化がある場合はtrue

  • 👀👀👀 new Integer(1)はオブジェクトを作成したのではないでしょうか.だから探してきた南宮星の答え
    ->同じものを削除します.Integerはequalsが上書きされたため削除され、値が同じ場合は同じオブジェクトとみなされます.
  • Object remove(int index)
  • 指定位置(index)のオブジェクトを削除すると、
  • にスペースがドラッグされます.
  • 👀👀なぜオブジェクトを返すのですか?:削除された要素
  • を返します.
    list1.remove(new Integer(1));	//boolean remove(Object o)
    ...
    list1.remove(1);		//Object remove(int index)
    //오토박싱된 인티저요소 1이 아니라 인덱스 1이다!!!
  • boolean removeAll(Collection c)
  • コレクションでは、コレクションc内のすべての同じオブジェクト
  • が削除される.
  • はtrue
  • に変化する.
  • void clear()
  • すべてのオブジェクトを削除
  • boolean retainAll(Collectoin c)
  • コレクションでは、コレクションc内の他のオブジェクト
  • が削除される.
  • はtrue
  • に変化する.
    list1.retainAll(list2);
    list2.removeAll(list1);
  • 代私が直接削除した時

  • 検索

  • int indexOf(Object o)
  • セットでは、格納されたオブジェクトoが見つかり、インデックスが返される.-1が見つからない場合は
  • を返します.
    list1.indexOf(new Integer(1));	//원칙
    list1.indexOf(1);			//오토박싱
    list1.indexOf("1");
  • 👀👀👀 new Integer(1)はオブジェクトを作成したのではないでしょうか.だから探してきた南宮星の答え
    ->同じものを削除します.Integerはequalsが上書きされたため削除され、値が同じ場合は同じオブジェクトとみなされます.
  • int lastIndexOf(Object o)
  • 右端から左に
  • を検索
  • boolean contains(Object o)
  • セットにオブジェクトoが含まれているかどうかを尋ねる.本当にtrueかfalse
  • なら
  • boolean containsAll(Collection c)
  • コレクションにコレクションcに含まれるすべてのオブジェクトが含まれているかどうかを尋ねる.本当にtrueかfalse
  • なら
    list1.containsAll(list2);

    読み取り

  • Object get(int index)
  • 読み出し(戻る)
  • 特定の位置インデックスに格納されたオブジェクト

    変更

  • Object set(int index, Object element)
  • 特定の場所インデックス内のオブジェクトをオブジェクト要素に変更する

    抽出

  • List subList(int fromIndex, int toIndex)
  • Indexから
  • をtoIndex-1に抽出し、新しい配列
  • を作成する.
  • 👀👀読む前に使うので、変更内容などを利用するには、新しいオブジェクトを手に入れる必要があります.??
  • List sub = list1.subList(1, 4);	
    ArrayList list2 = new ArrayList(sub);
    //-> 를 한줄로 줄이면
    ArrayList list2 = new ArrayList(list1.subList(1, 4));

    その他

  • Object[] toArray()
  • に格納されたオブジェクトをオブジェクト配列として返す
  • Object[] toArray(Object[] a)
  • に記憶するオブジェクトは、所与のオブジェクト配列aにおいて
  • に記憶される.
  • boolean isEmpty()
  • が空であるかどうかを確認します.空はtrue、満はfalse
  • void trim ToSize()
  • 空きスペースを排除
  • int size()
  • が保存するオブジェクトの数
  • を返します.
    ex11_01
    import java.util.ArrayList;
    import java.util.*;
    
    public class Ex11_01 {
    
    	public static void main(String[] args) {
    		//capacity=10인 ArrayList
    		ArrayList list1 = new ArrayList(10);
    		//원래 객체만 받는다!! 그런데 현재 java9부턴 deprecated
    		list1.add(new Integer(5));
    		list1.add(4);
    		list1.add(new Integer(2));
    		list1.add(new Integer(0));
    		list1.add(new Integer(1));
    		list1.add(new Integer(3));
    		
    		//ArrayList(Collection c) 
    		//subList는 읽기전용이라 활용하려면 새 객체로 받아줘야 한다!
    		/*List sub = list1.subList(1, 4);
    		ArrayList list2 = new ArrayList(sub);
    		를 줄인 것이다.*/		//index 1~3
    		ArrayList list2 = new ArrayList(list1.subList(1, 4));
    		print(list1, list2);
    		
    		//**Collection은 인터페이스, Collections는 유틸 클래스!!!
    		Collections.sort(list1);	//(오름차순)정렬
    		Collections.sort(list2);	//**sort(List<T> list)
    		print(list1, list2);
    		
    		//**컬렉션타입 list1이, 컬렉션타입 list2에 포함된 모든 객체들을 포함하는지
    		System.out.println("list1.containsAll(list2) : "+list1.containsAll(list2));
    		
    		list2.add("B");
    		list2.add("C");
    		list2.add(3, "A");	//index3에 "A"추가, 뒤는 밀려난다.
    		print(list1, list2);
    		
    		//변경
    		list2.set(3, "AA");
    		print(list1, list2);
    		
    		//검색
    		list1.add(0, "1");
    		print(list1, list2);
    		System.out.println("indexOf(String \"1\") = "+list1.indexOf("1"));
    		System.out.println("indexOf(Integer 1) = "+list1.indexOf(1));
    		//**원래는 : list1.indexOf(new Integer(1)); 이다!!!
    		System.out.println("=====");
    		
    		//삭제
    		list1.remove(new Integer(1));	//boolean remove(Object o)
    		print(list1, list2);
    		//**list1.remove(1) 오토박싱 1인 요소를 제거한다 가 안됨!!!
    		list1.remove(1);		//Object remove(int index)
    		//***index 1 이 해당된다.
    		//따라서 위의 객체 방식으로 해야함!!
    		print(list1, list2);
    		
    		//포함된 것 제외하고 삭제
    		System.out.println("list1.retainAll(list2) : "+list1.retainAll(list2));
    		print(list1, list2);
    		
    		//포함된 것 삭제
    		list2.removeAll(list1);
    		print(list1, list2);
    		//위를 contains 와 반복문을 통해 삭제
    		System.out.println("list2.size() : "+list2.size());
    		for(int i=list2.size()-1; i>=0; i--) {
    			//(6-1=)5~0 총 6번 실행
    			if(list1.contains(list2.get(i)))	//[5]부터
    				//***list1과 list2의 순서를 바꾸면 안된다!!
    				//contains(Object o): 컬렉션이 아닌 객체를 받기에 get()을 통해 하나하나 비교해야 함
    				list2.remove(i);
    		}
    		print(list1, list2);
    
    	}
    	
    	static void print(ArrayList list1, ArrayList list2) {
    		System.out.println("list1 : "+list1);
    		System.out.println("list2 : "+list2);
    		System.out.println("=====");
    	}
    
    }
    list1 : [5, 4, 2, 0, 1, 3]
    list2 : [4, 2, 0]
    =====
    list1 : [0, 1, 2, 3, 4, 5]
    list2 : [0, 2, 4]
    =====
    list1.containsAll(list2) : true
    list1 : [0, 1, 2, 3, 4, 5]
    list2 : [0, 2, 4, A, B, C]
    =====
    list1 : [0, 1, 2, 3, 4, 5]
    list2 : [0, 2, 4, AA, B, C]
    =====
    list1 : [1, 0, 1, 2, 3, 4, 5]
    list2 : [0, 2, 4, AA, B, C]
    =====
    indexOf(String "1") = 0
    indexOf(Integer 1) = 2
    =====
    list1 : [1, 0, 2, 3, 4, 5]
    list2 : [0, 2, 4, AA, B, C]
    =====
    list1 : [1, 2, 3, 4, 5]
    list2 : [0, 2, 4, AA, B, C]
    =====
    list1.retainAll(list2) : true
    list1 : [2, 4]
    list2 : [0, 2, 4, AA, B, C]
    =====
    list2.size() : 6
    list1 : [2, 4]
    list2 : [0, AA, B, C]
    =====

    Ref

  • 生活コードJAVA 1
  • オブジェクト化の説明
  • w3schools JAVA
  • 羅東彬
  • ジャワけっしょうせき
  • ジャワ議政石羽バニラ
  • クラスとオブジェクト