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("최");
}};
*/
}
}