자바는 배열의 문제점을 해결하기위해, 자료구조를 바탕으로 객체를 효율적으로 추가, 삭제 , 검색할 수 있도록 java.util 패키지에 컬랙션과 관련된 인터페이스와 클래스들을 포함시켜 놓았다. 이를 총칭해서 컬렉션 프레임워크라고 부른다.

List

순서 O, 중복 O

list의 메소드 : add, size, get, remove

ArrayList

List 인터페이스의 구현 클래스

List<String> list = new ArrayList<String>();
		
list.add("Java"); // 맨끝에 String 객체를 저장
list.add("JDBC"); // 지정된 인덱스에 객체 삽입
list.add("Servlet/JSP");
list.add(2, "Database");
list.add("iBATIS");

int size = list.size();
System.out.println("List size : " + size);
System.out.println();

String skill = list.get(2);
System.out.println("2: " + skill);
System.out.println();

// 저장된 총 객체 수만큼 루핑
for (int i = 0; i < list.size(); i++) {
    String str = list.get(i);
    System.out.println(i + ":" + str);
}
System.out.println();

list.remove(2); // 인덱스로 객체 삭제
list.remove(2);
list.remove("iBATIS"); // 객체 삭제

// 인덱스가 필요없다면 향상된 for문을 사용한 루핑
for(String str : list){
    System.out.println(str + " ")	
}

Generic

/* JAVA 4 */
List list = new ArrayList();
list.add("Hong");
Object obj = list.get(0); // 컬렉션에서 객체 검색
String name = (String) obj; // 타입 변환 후 사용

/* JAVA 5 */
List<String> list = new ArrayList<String>();
list.add("Hong");
String name = list.get(0);

모든 종류의 객체를 저장할 수 있다는 장점은 있지만, 저장할 때 Object로 변환하고, 찾아올 때 원래 타입으로 변환해야 사용할 수 있다.

asList() method

고정된 객체들로 구성된 List를 생성

List<String> list = Arrays.asList("Kevin","Tom","Hong");

LinkedList

빈번한 객체 삭제와 삽입이 일어나는 곳에서 사용한다.