컬렉션 프레임워크 (Collection Framework) - 2.4 LinkedList

CJI0524·2024년 7월 11일

Java/Collection Framework

목록 보기
6/26

1. LinkedList 클래스

LinkedList 클래스는 그림과 같이 인터페이스 List와 인터페이스 Deque를 구현한 클래스로 배열의 단점을 보완한 자료구조이다. LinkedList 클래스는 불연속적으로 존재하는 데이터를 서로 연결(link)한 형태로 구성되어 있다. LinkedList는 중간에서 데이터를 추가/삭제하는 속도가 ArrayList에 비해 굉장히 빠르지만 순차적으로 데이터를 추가/삭제하거나 데이터를 읽는 시간은 ArrayList에 비해 더 느리다.

마지막으로 LinkedList클래스는 더블 링크드 리스트(Double Linked List)의 형태로 구현되어 있다. 이는 LinkedList에 저장되어 있는 각 요소에 대해 단방향이 아닌 양방향으로 접근하는걸 가능하게 해준다.

2. LinkedList 클래스에 정의된 메서드 목록

반환타입이 boolean인 메서드들은 작업에 성공하거나 사실이면 true, 아니면 false를 반환한다.

2.1. 생성자

메서드기능
LinkedList()LinkedList 객체 생성
LinkedList(Collection c)주어진 컬렉션(c)을 포함하는 LinkedList객체를 생성

2.2. 삽입 / 탐색 / 삭제 메서드

삽입

메서드기능
boolean add(Object o)
boolean addAll(Collection c)
지정된 객체(o) 또는 Collection(c)의 객체들을 ㅣLinkedList에 추가.
void add(int index, Object element)
boolean addAll(int index, Collection c)
지정된 위치(index)에 객체(element) 또는 컬렉션(c)에 포함된 객체들을 추가

탐색

메서드기능
boolean contains(Object o)
boolean containsAll(Collection c)
지정된 객체(o) 또는 Collection(c)의 객체들이 포함되어 있는지 확인.
int indexOf(Object o)지정된 객체의 위치(index)를 반환
(List의 첫 번째 요소부터 순방향으로 탐색)
int lastIndexOf(Object o)지정된 객체의 위치(index)를 반환
(List의 마지막 요소부터 역방향으로 탐색)

삭제

메서드기능
boolean remove(Object o)
boolean removeAll(Collection c)
지정된 객체(o) 또는 Collection(c)의 객체들을 삭제.
Object remove(int index)지정된 위치(index)에 있는 객체를 삭제하고 삭제한 객체를 반환
boolean retainAll(Collection c)지정된 Collection에 포함된 객체만을 남기고, 다른 객체들은 LinkedList에서 삭제
집합의 교집합 개념과 유사함.
void clear()LinkedList의 모든 객체를 삭제

Get / Set

메서드기능
Object get(int index)지정된 위치(index)에 있는 객체를 반환
Object set(int index, Object element)지정된 위치(index)에 있는 객체를 element로 변경

2.3. Queue에서 활용하는 메서드

Queue에 대한 설명은 해당링크를 참조한다.

다음의 메서드는 예외를 발생시키는 메서드이다.

메서드기능
boolean add(Object o)지정된 객체를 LinkedList에 추가.
저장공간이 부족하면 IllegalStateException 발생
Object remove()LinkedList에서 첫번째 객체를 꺼내 반환.
비어있으면 NoSuchElementException 발생
Object element()삭제없이 첫번째 요소를 읽음.
비어있으면 NoSuchElementException 발생

다음의 메서드는 예외를 발생시키지 않는 메서드이다.

메서드기능
boolean offer(Object o)LinkedList에 객체를 저장
Object poll()LinkedList에서 첫번째 객체를 꺼내서 반환
비어있으면 null을 반환
Object peek()삭제없이 첫번째 요소를 읽음
비어있으면 null을 반환

2.3. Deque에서 활용하는 메서드

Deque에 대한 설명은 해당 링크를 참조한다.

삽입

메서드기능
void addFirst(Object o)LinkedList의 맨 앞에 객체(o)를 추가
void addLast(Object o)LinkedList의 맨 뒤에 객체(o)를 추가
boolean offerFirst(Object o)LinkedList의 맨 앞에 객체(o)를 추가
boolean offerLast(Object o)LinkedList의 맨 뒤에 객체(o)를 추가

탐색

메서드기능
Object getFirst()LinkedList의 맨 앞 요소를 반환
비어있으면 NoSuchElementException 발생
Object getLast()LinkedList의 맨 뒤 요소를 반환
비어있으면 NoSuchElementException 발생
Object peekFirst()LinkedList의 맨 앞 요소를 반환
비어있으면 null을 반환
Object peekLast()LinkedList의 맨 뒤 요소를 반환
비어있으면 null을 반환

제거

메서드기능
Object removeFirst()LinkedList의 맨 앞 요소를 꺼내서 반환
비어있으면 NoSuchElementException 발생
Object removeLast()LinkedList의 맨 뒤 요소를 반환
비어있으면 NoSuchElementException 발생
Object PollFirst()LinkedList의 맨 앞 요소를 꺼내서 반환
비어있으면 null을 반환
Object PollLast()LinkedList의 맨 뒤 요소를 꺼내서 반환
비어있으면 null을 반환
boolean removeFirstOccurence(Object o)LinkedList에서 앞에서부터 첫번째로 일치하는 객체를 제거
boolean removeLastOccurence(Object o)LinkedList에서 뒤에서부터 첫번째로 일치하는 객체를 제거

Stack (스택) 메서드

메서드기능
void push(Object o)LinkedList의 맨 앞에 객체(o)를 추가
Object pop()LinkedList의 맨 앞 객체(o)를 꺼내서 반환

2.4. 추가 핵심 기능

Object 메서드

메서드기능
boolean equals(Object o)동일한 LinkedList인지 확인
int hashCode()LinkedList의 해시 코드를 반환

컬렉션에 저장된 요소 접근

메서드기능
Iterator iterator()해당 LinkedList의 iterator를 얻어서 반환
ListIterator listIterator()
ListIterator listIterator(int index)
해당 LinkedList의 객체에 접근할 수 있는 ListIterator를 얻어서 반환
Iterator descendingIterator()역순으로 조회하기 위한 DescendingIterator를 반환

컬렉션 상태 체크 / 변경

메서드기능
boolean isEmpty()LinkedList가 비어있는지 확인
int size()LinkedList에 저장된 객체의 개수를 반환
void sort(Comparator c)지정된 비교자(comparator)로 LinkedList를 정렬

2.5. 기타

메서드기능
Object[] toArray()LinkedList에 저장된 객체를 객체배열(Object[])로 반환
Object[] toArray(Object[] a)지정된 배열에 LinkedList의 객체를 저장해서 반환
List subList(int fromIndex, int toIndex)지정된 범위(fromIndex부터 toIndex)에 있는 객체를 반환

3. 해당 게시글 작성에 참고한 글 목록

자바의 정석 3판 (저자 : 남궁성)
Java Collections Framework Video Tutorial
오라클 Java 문서

profile
개발돌이

0개의 댓글