JAVA/클래스&인터페이스

[Java] List 인터페이스

katia 2023. 4. 10. 20:22

List 인터페이스

  • List<E>(java.util.List<E>)는 순서가 있는 인자을 가지는 자료 구조에 대한 인터페이스이다.

List 객체 메서드

  • List 인터페이스를 상속받는 클래스와 인터페이스는 아래 객체 메서드를 가진다.
  • add(int i, E e) : i 순번이 될 수 있도록 e를 인자로 추가한다, 원래 순번이 i이상인 인자의 순번은 1씩 밀린다.
  • get(int i ) : 순번이 i인 인자를 반환한다.
  • indexOf(Object o) : 인자중 o와 동일하거나 equals()에 대해 true인 첫번째 인자의 순번을 반환한다. 없다면 -1을 반환한다.
  • lastIndexOf(Object o) : 인자중 o와 동일하거나 equals()에 대해 true인 마지막 인자의 순번을 반환한다. 없다면 -1을 반환한다.
  • remove(int i) : 순번이 i인 인자를 제거한다. 보다 뒤에 있는 모든 인자의 순번은 1씩 당겨진다.
  • set(int i, E e) : 순번이 i인 인자를 e로 대체 한다.

List 인터페이스 종류

(1)ArrayList

  • ArrayList<E> (java.util.ArrayList<E>) : 각 인자를 일반 배열처럼 관리하기 때문에 제공된 순번에 따른 인자 접근은 매우 빠르지만, 인자 제거 및 추가 등 배열의 길이가 변하는 경우가 속도가 매우 느리다.

(2)Vector

  • Vector<E> (java.util.Vector<E>) : ArrayList<E>와 동일하지만 동기화(synchronized)되어 있다.

(3)LinkedList

  • LinkedList<E> (java.util.LinkedList<E>) : 각 인자의 존재를 각 인자에 인접한 인자를 인식하게 함으로써 각 인자를 관리한다. 이 때문에, 제공된 순번에 따른 인자 접근이 매우 느리지만, 인자 제거 및 추가 등 배열의 길이가 변하는 경우 속도가 매우 빠르다.

(4)Stack

  • Stack<E> (java.util.Stack<E>) : 후입선출(LIFO, Last in First Out) 방식으로 인자를 관리한다.(Push/Pop)

List 예시

import java.util.ArrayList;
public class Main{
    public static void main(String[] args) {
        ArrayList<String> students = new ArrayList<>();
        // 값을 추가(삽입)
        students.add("김");
        students.add("이");
        students.add("박");
        students.add("최");
        // 값을 제거
        students.remove(3);     // 인덱스로 제거
        students.remove("박");   // 값을 비교하여 삭제
        // 값을 출력
        System.out.println(students);

        /*
            다른 방식의 값 추가
            ArrayList<String> students = new ArrayList<>() {{
                add("김");
                add("이");
                add("박");
                add("최");
            }};
        */
    }
}

'JAVA > 클래스&인터페이스' 카테고리의 다른 글

[Java] Double 클래스  (0) 2023.04.10
[Java] Long 클래스  (0) 2023.04.10
[Java] Integer 클래스  (0) 2023.04.10
[Java] Math 클래스  (0) 2023.04.10
[Java] Collection  (0) 2023.04.06