LinkedList — 이중 연결 리스트
LinkedList — 이중 연결 리스트
LinkedList<E>는 List와 Deque 인터페이스의 이중 연결 리스트 구현이에요. 모든 선택적 리스트 연산을 구현하고 모든 요소(null 포함)를 허용해요. 인덱스로 접근하는 연산은 지정 인덱스에 더 가까운 쪽(처음 또는 끝)에서 순회해요.
본문
public class LinkedList<E> extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, Serializable
이 구현은 동기화되지 않아요. 여러 스레드가 동시에 접근하고 구조적으로 수정한다면 외부 동기화가 필요해요. 보통 Collections.synchronizedList(new LinkedList(...))로 감싸서 만들어요. iterator/listIterator가 반환하는 반복자는 fail-fast여서 생성 후 반복자의 remove/add 외 방법으로 구조가 수정되면 ConcurrentModificationException을 던져요.
생성자
LinkedList()— 빈 리스트를 만들어요.LinkedList(Collection c)— 지정된 컬렉션의 요소를 그 반복자 순서대로 담아 만들어요.
양끝 접근 (Deque 연산)
getFirst()/getLast()— 첫/마지막 요소를 반환해요.removeFirst()/removeLast()— 첫/마지막 요소를 제거하고 반환해요.addFirst(E)/addLast(E)— 처음/끝에 요소를 삽입해요.peek()/element()— 머리(첫 요소)를 제거하지 않고 반환해요.poll()/remove()— 머리를 제거하고 반환해요.offer(E)/offerFirst(E)/offerLast(E)— 꼬리/앞/뒤에 요소를 추가해요.peekFirst()/peekLast()— 비어 있으면null을 반환하는 버전의 조회예요.pollFirst()/pollLast()— 비어 있으면null을 반환하는 버전의 제거예요.push(E)/pop()— 리스트가 나타내는 스택에 넣고/빼는 연산으로addFirst/removeFirst와 동등해요.removeFirstOccurrence(Object)/removeLastOccurrence(Object)— 처음/마지막 일치 요소를 제거해요.descendingIterator()— 역순 반복자를 반환해요.
리스트 연산
contains(Object)/size()/clear()— 기본 리스트 연산이에요.add(E)/add(int, E)/addAll(Collection)/addAll(int, Collection)— 추가 연산들이에요.remove(Object)/remove(int)— 요소 제거 연산이에요.get(int)/set(int, E)/indexOf(Object)/lastIndexOf(Object)— 위치 기반 접근이에요.listIterator(int)— 지정 위치에서 시작하는ListIterator를 반환해요.
기타
clone()— 얕은 복사본을 반환해요(요소 자체는 복제되지 않아요).toArray()/toArray(T[] a)— 리스트를 배열로 변환해요.spliterator()—SIZED/ORDERED특성을 보고하는 late-binding·fail-fastSpliterator를 만들어요.reversed()— 반대 순서의 뷰를 반환해요.