JAVA

[JAVA] ArrayList

인디아나쥰이 2021. 8. 19. 01:23

ArrayList란?

기존의 Vector를 개선한 것이며, Object 배열을 이용해서 데이터를 순차적으로 저장한다.

배열과 동일하게 인덱스는 0부터 사용하며, 배열과 다른점은 크기를 동적할당 하는것이 가능하다.

 

 

ArrayList 생성

import java.util.ArrayList;

ArrayList<Integer> lis1 = new ArrayList<Integer>(); // 자료형을 지정
ArrayList<Integer> list2 = new ArrayList<>(); //자료형 생략도 가능
ArrayList<Integer> list3 = new ArrayList<>(10); //초기용량 설정

 

나머지는 코드로 확인해보자

 

Class Main{

  public static void main(String[] args)
  {
  	ArrayList list1 = new ArrayList(10);
    list1.add(new Integer(5));
    list1.add(new Integer(4));
    list1.add(new Integer(2));
    list1.add(new Integer(0));
    list1.add(new Integer(1));
    list1.add(new Integer(3));
    
    ArrayList list2 = new ArrayList(list1.subList(1, 4)); // 1부터 4사이의 값들을 반환
    print(list1, list2);
    
    Collection.sort(list1); //정렬
    Collection.sort(list2);
    
    print(list1, list2);
    
    //list2가 list1의 모든 요소를 가졌는지 여부
    System.out.println("list1.containsAll(list2) : " + list1.containsAll(list2)); 
    
    list2.add("B");
    list2.add("C");
    list2.add(3, "A"); //인덱스를 지정해서 값 넣기
    print(list1, list2);
    
    list2.set(3, "AA"); //주어진 객체를 지정된 위치에 저장
    print(list1, list2);
    
    //list1에서 list2와 겹치는 부분만 남기고 나머지는 삭제한다.
    System.out.println("list1.retainAll(list2): " + list1.retainAll(list2));
    
    print(list1, list2);
    
    //list2에서 list1에 포함된 객체들을 삭제한다.
    for(int i = list2.size() - 1; i >= 0; i--)
    {
    	if(list1.contains(list2.get(i)))
        	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();
    }
}

※JDK .1.5부터는 타입을 지정하지않고 ArrayList를 사용하면 에러가 난다!!

 

만약 타입을 지정하지 않고 여러가지 타입을 사용하겠다 하면 제네릭을 사용하면된다.

제네릭은 추후 정리할 예정이다.

728x90
반응형