List 컬렉션
포스트
취소

List 컬렉션

특징

  • 요소의 저장 순서가 유지된다.
  • 같은 요소의 중복 저장을 허용한다.

ArrayList<E> 클래스

  • 내부적으로 배열을 이용하여 요소를 저장한다. 배- 열을 이용하기 때문에 인덱스를 이용해 배열 요소에 빠르게 접근할 수 있다.
  • 배열은 크기를 변경할 수 없는 인스턴스다.
    • 크기를 늘리기 위해서는 새로운 배열을 생성하고 기존의 요소들을 옮겨야 하는 복잡한 과정을 거쳐야 한다.
    • 자동으로 수행되는 과정이지만 요소의 추가 및 삭제 작업에 걸리는 시간이 매우 길어진다.
  • JDK 1.2부터 제공
  • 사용 예시
ArrayList<Integer> arrList = new ArrayList<Integer>();

//add() 메소드를 이용한 요소의 저장
arrList.add(20);
arrList.add(30);
arrList.add(10);

//for 문과 get() 메소드를 이용한 요소의 출력
for (int i = 0; i < arrList.size(); i++) {
    System.out.print(arrList.get(i) + " ");
}

//remove() 메소드를 이용한 요소의 제거
arrList.remove(1);

//Enhanced for 문과 get() 메소드를 이용한 요소의 출력
for (int e : arrList) {
    System.out.print(e + " ");
}

//Collections.sort() 메소드를 이용한 요소의 정렬
Collections.sort(arrList);

//iterator() 메소드와 get() 메소드를 이용한 요소의 출력
Iterator<Integer> iter = arrList.iterator();
while (iter.hasNext()) {
    System.out.print(iter.next() + " ");
}

//set() 메소드를 이용한 요소의 변경
arrList.set(0, 20);
for (int e : arrList) {
    System.out.print(e + " ");
}

//size() 메소드를 이용한 요소의 총 개수
System.out.println("리스트의 크기 : " + arrList.size());

LinkedList<E> 클래스

  • 내부적으로 연결 리스트(linked list)를 이용하여 요소를 저장한다.
  • 배열은 저장된 요소가 순차적으로 저장된다.
  • 저장된 요소가 비순차적으로 분포되며 이러한 요소들 사이를 링크(link)로 연결하여 구성한다.
  • 관련 용어
    • 단일 연결 리스트(singly linked list)
      • 다음 요소를 가리키는 참조만을 가지는 연결 리스트
      • 요소의 저장과 삭제 작업이 다음 요소를 가리키는 참조만 변경하면 되므로 아주 빠르게 처리할 수 있다.
      • 현재 요소에서 이전 요소로 접근하기가 매우 어렵다.
    • 이중 연결 리스트(doubly linked list)
      • 다음 요소를 가리키는 참조와 이전 요소를 가리키는 참조도 가지는 연결 리스트
  • JDK 1.2부터 제공
  • 사용 예시
LinkedList<String> lnkList = new LinkedList<String>();

//add() 메소드를 이용한 요소의 저장
lnkList.add("셋");
lnkList.add("넷");
lnkList.add("하나");

//for 문과 get() 메소드를 이용한 요소의 출력
for (int i = 0; i < lnkList.size(); i++) {
    System.out.print(lnkList.get(i) + " ");
}

//remove() 메소드를 이용한 요소의 제거
lnkList.remove(1);

//Enhanced for 문과 get() 메소드를 이용한 요소의 출력
for (String e : lnkList) {
    System.out.print(e + " ");
}

// set() 메소드를 이용한 요소의 변경

lnkList.set(1, "둘");
for (String e : lnkList) {
    System.out.print(e + " ");
}

//size() 메소드를 이용한 요소의 총 개수
System.out.println("리스트의 크기 : " + lnkList.size());

Vector<E> 클래스

  • 현재의 Vector 클래스는 ArrayList 클래스와 마찬가지로 List 인터페이스를 상속받는다.
  • JDK 1.0부터 제공되는 ArrayList 클래스와 같은 동작을 수행하는 클래스
  • 현재에는 기존 코드와의 호환성을 위해서만 남아있으므로 Vector 클래스보다는 ArrayList 클래스를 사용하는 것이 좋다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.