LinkedList 클래스 선언부 |
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable |
메서드/설명 | 소속 | 예제 | 결과 |
java.util.LinkedList | |||
LinkedList() LinkedList 객체를 생성 |
LinkedList | LinkedList<String> list = new LinkedList<>(); list.add("Apple"); list.add("Banana"); System.out.println(list); |
[Apple, Banana] |
LinkedList(Collection<? extends E> c) 주어진 컬렉션을 포함하는 LinkedList 객체를 생성 |
LinkedList | ArrayList<String> baseList = new ArrayList<>(); baseList.add("Dog"); baseList.add("Cat"); LinkedList<String> list = new LinkedList<>(baseList); |
[Dog, Cat] |
boolean add(E e) 리스트의 끝에 요소를 추가한다. |
Collection | List<String> list = new LinkedList<>(); list.add("Apple"); list.add("Banana"); System.out.println(list); |
[Apple, Banana] |
void add(int index, E element) 지정된 위치(index)에 요소를 삽입한다. 기존 요소는 뒤로 밀린다. |
List | List<String> list = new LinkedList<>(); list.add("Apple"); list.add("Banana"); list.add(1, "Grape"); System.out.println(list); |
[Apple, Grape, Banana] |
boolean addAll(Collection<? extends E> c) 리스트 끝에 주어진 컬렉션의 모든 요소를 추가한다. |
Collection | List<String> extra = Arrays.asList("Cat", "Dog"); List<String> list = new LinkedList<>(); list.add("Apple"); list.addAll(extra); System.out.println(list); |
[Apple, Cat, Dog] |
boolean addAll(int index, Collection<? extends E> c) 지정된 위치(index)부터 컬렉션의 모든 요소를 삽입한다. |
List | List<String> extra = Arrays.asList("Cat", "Dog"); List<String> list = new LinkedList<>(); list.add("Apple"); list.add("Banana"); list.addAll(1, extra); System.out.println(list); |
[Apple, Cat, Dog, Banana] |
void addFirst(E e) 리스트의 맨 앞에 요소를 추가한다. |
Deque | Deque<String> list = new LinkedList<>(); list.addFirst("First"); System.out.println(list); |
[First] |
void addLast(E e) 리스트의 맨 뒤에 요소를 추가한다. |
Deque | Deque<String> list = new LinkedList<>(); list.addLast("Last"); System.out.println(list); |
[Last] |
void clear() 리스트의 모든 요소를 제거한다. |
Collection | LinkedList<String> list = new LinkedList<>(); list.add("A"); list.clear(); System.out.println(list); |
[] |
Object clone() 리스트를 얕은 복사하여 새 객체로 반환한다. |
Cloneable | LinkedList<String> list = new LinkedList<>(); list.add("A"); LinkedList<String> copy = (LinkedList<String>) list.clone(); System.out.println(copy); |
[A] |
boolean contains(Object o) 지정한 객체가 리스트에 존재하면 true를 반환한다. |
Collection | LinkedList<String> list = new LinkedList<>(); list.add("A"); System.out.println(list.contains("A")); |
true |
Iterator<E> descendingIterator() 리스트의 요소를 역순으로 순회할 수 있는 반복자를 반환한다. |
Deque | Deque<String> list = new LinkedList<>(); list.add("A"); list.add("B"); list.add("C"); Iterator<String> it = list.descendingIterator(); while (it.hasNext()) { System.out.print(it.next() + " "); } |
C B A |
E element() 첫 번째 요소를 반환하되, 없으면 예외를 던진다. |
Queue | Queue<String> list = new LinkedList<>(); list.add("A"); System.out.println(list.element()); |
A |
E get(int index) 지정된 인덱스의 요소를 반환한다. |
List | List<String> list = new LinkedList<>(); list.add("X"); list.add("Y"); System.out.println(list.get(1)); |
Y |
E getFirst() 첫 번째 요소를 반환한다. 없으면 예외를 던진다. |
Deque | Deque<String> list = new LinkedList<>(); list.add("A"); System.out.println(list.getFirst()); |
A |
E getLast() 마지막 요소를 반환한다. 없으면 예외를 던진다. |
Deque | Deque<String> list = new LinkedList<>(); list.add("A"); list.add("B"); System.out.println(list.getLast()); |
B |
int indexOf(Object o) 주어진 객체가 처음 나타나는 인덱스를 반환하고, 없으면 -1 반환. |
List | List<String> list = new LinkedList<>(); list.add("A"); list.add("B"); list.add("A"); System.out.println(list.indexOf("A")); |
0 |
int lastIndexOf(Object o) 주어진 객체가 마지막으로 나타나는 인덱스를 반환하고, 없으면 -1 반환. |
List | List<String> list = new LinkedList<>(); list.add("A"); list.add("B"); list.add("A"); System.out.println(list.lastIndexOf("A")); |
2 |
ListIterator<E> listIterator(int index) 주어진 인덱스부터 순회할 수 있는 반복자를 반환한다. |
List | LinkedList<String> list = new LinkedList<>(); list.add("A"); list.add("B"); list.add("C"); ListIterator<String> it = list.listIterator(1); while (it.hasNext()) { System.out.print(it.next() + " "); } |
B C |
boolean offer(E e) 큐의 형태로 리스트 끝에 요소를 추가한다. |
Queue | Queue<String> list = new LinkedList<>(); list.offer("X"); System.out.println(list); |
[X] |
boolean offerFirst(E e) 큐의 앞쪽(헤드)에 요소를 삽입한다. |
Deque | Deque<String> list = new LinkedList<>(); list.offerFirst("Start"); System.out.println(list); |
[Start] |
boolean offerLast(E e) 큐의 뒤쪽(꼬리)에 요소를 삽입한다. |
Deque | Deque<String> list = new LinkedList<>(); list.offerLast("End"); System.out.println(list); |
[End] |
E peek() 첫 요소를 반환하되 제거하지 않는다. 없으면 null 반환. |
Queue | Queue<String> list = new LinkedList<>(); list.add("A"); System.out.println(list.peek()); |
A |
E peekFirst() peek()와 동일 |
Deque | Deque<String> list = new LinkedList<>(); list.add("A"); System.out.println(list.peekFirst()); |
A |
E peekLast() 마지막 요소를 확인한다. |
Deque | Deque<String> list = new LinkedList<>(); list.add("A"); list.add("B"); System.out.println(list.peekLast()); |
B |
E poll() 첫 요소를 반환하고 제거한다. 없으면 null 반환. |
Queue | Queue<String> list = new LinkedList<>(); list.add("A"); list.add("B"); System.out.println(list.poll()); |
A |
E pollFirst() poll()과 동일 |
Deque | Deque<String> list = new LinkedList<>(); list.add("A"); list.add("B"); System.out.println(list.pollFirst()); |
A |
E pollLast() 리스트 끝의 요소를 꺼내서 제거한다. |
Deque | Deque<String> list = new LinkedList<>(); list.add("X"); list.add("Y"); System.out.println(list.pollLast()); |
Y |
E pop() 스택처럼 리스트의 첫 번째 요소를 제거하고 반환한다. (없으면 예외 발생) |
Deque | Deque<String> list = new LinkedList<>(); list.push("A"); list.push("B"); System.out.println(list.pop()); |
B |
void push(E e) 스택처럼 리스트의 앞에 요소를 추가한다. (addFirst()와 동일) |
Deque | Deque<String> list = new LinkedList<>(); list.push("X"); System.out.println(list); |
[X] |
E remove() 첫 번째 요소를 제거하고 반환한다. (없으면 예외 발생) |
Collection | LinkedList<String> list = new LinkedList<>(); list.add("A"); System.out.println(list.remove()); |
A |
E remove(int index) 지정된 인덱스의 요소를 제거하고 반환한다. |
List | LinkedList<String> list = new LinkedList<>(); list.add("A"); list.add("B"); System.out.println(list.remove(1)); |
B |
boolean remove(Object o) 주어진 객체를 처음으로 만나는 위치에서 제거한다. |
Collection | LinkedList<String> list = new LinkedList<>(); list.add("A"); list.add("B"); list.add("A"); list.remove("A"); System.out.println(list); |
[B, A] |
E removeFirst() 첫 번째 요소를 제거하고 반환한다. (없으면 예외 발생) |
Deque | Deque<String> list = new LinkedList<>(); list.add("Start"); list.add("End"); System.out.println(list.removeFirst()); |
Start |
boolean removeFirstOccurrence(Object o) 주어진 객체가 처음으로 나타나는 위치의 요소를 제거한다. |
Deque | Deque<String> list = new LinkedList<>(); list.add("X"); list.add("Y"); list.add("X"); list.removeFirstOccurrence("X"); System.out.println(list); |
[Y, X] |
E removeLast() 마지막 요소를 제거하고 반환한다. (없으면 예외 발생) |
Deque | Deque<String> list = new LinkedList<>(); list.add("A"); list.add("B"); System.out.println(list.removeLast()); |
B |
boolean removeLastOccurrence(Object o) 주어진 객체가 마지막으로 나타나는 위치의 요소를 제거한다. |
Deque | Deque<String> list = new LinkedList<>(); list.add("X"); list.add("Y"); list.add("X"); list.removeLastOccurrence("X"); System.out.println(list); |
[X, Y] |
E set(int index, E element) 지정된 위치의 요소를 주어진 요소로 교체한다. |
List | LinkedList<String> list = new LinkedList<>(); list.add("A"); list.add("B"); list.set(1, "Z"); System.out.println(list); |
[A, Z] |
Object[] toArray() 리스트의 모든 요소를 Object 배열로 반환한다. |
Collection | LinkedList<String> list = new LinkedList<>(); list.add("A"); list.add("B"); Object[] array = list.toArray(); System.out.println(Arrays.toString(array)); |
[A, B] |
<T> T[] toArray(T[] a) 리스트의 모든 요소를 지정한 타입 배열에 복사하여 반환한다. |
Collection | LinkedList<String> list = new LinkedList<>(); list.add("A"); list.add("B"); String[] arr = list.toArray(new String[0]); System.out.println(Arrays.toString(arr)); |
[A, B] |
int size() 리스트에 저장된 요소의 개수를 반환한다. |
Collection | LinkedList<String> list = new LinkedList<>(); list.add("A"); list.add("B"); System.out.println(list.size()); |
2 |
Q. 왜? linkedlist 컬렉션을 사용할 때 대부분 add()를 사용하지않고 offer() 메서드를 사용할까?
A. LinkedList가 Queue 또는 Deque 인터페이스로 사용되는 경우가 많기 때문이다.
Q. LinkedList가 여러 인터페이스를 구현하면서 비슷해 보이는 메서드들이 많은 이유는?
A. 다양한 인터페이스 용도에 맞게 다형성을 활용하라는 의도로 제공된 것이며, 선언 시 의도한 사용 목적에 맞는 부모 타입으로 사용하는 것이 가장 좋은 설계 방식
'🖥️ Backend > Java' 카테고리의 다른 글
ArrayList 클래스 메서드 총 정리 (0) | 2025.05.01 |
---|---|
Map 인터페이스 추상 메서드 총 정리 (0) | 2025.05.01 |
Set 인터페이스 추상 메서드 총 정리 (0) | 2025.05.01 |
Queue 인터페이스 추상 메서드 총 정리 (0) | 2025.05.01 |
List 인터페이스 추상 메서드 총 정리 (0) | 2025.05.01 |