Java & Spring

[Java] LinkedList

ju_young 2023. 10. 20. 11:03
728x90
  • 새로운 객체를 삽입하거나 삭제하기 간편
  • 물리 메모리를 연속적으로 사용하지 않아도 되기 때문에 관리가 간편
  • ArrayList는 중간 인덱스의 객체를 제어하면 뒤의 객체의 인덱스가 1씩 앞으로 당겨지기때문에 빈번한 객체 삭제와 삽입이 일어나는 곳에서는 ArrayList보다 링크만 변경하면되는 LinkedList가 좋은 성능을 발휘
  • ArrayList는 내부 배열에 객체를 저장하여 인덱스로 관리하지만 LinkedList는 인접 참조를 링크하여 체인처럼 관리

수정 과정

  • 탐색, 삽입, 삭제: O(n)
  • 시작과 끝의 삽입, 삭제: O(1)

ArrayList vs LinkedList

구분 순차적으로 추가/삭제 중간에 추가/삭제 검색
ArrayList 빠름 느림 빠름
LinkedList 느림 빠름 느림

메소드 정리

값 추가

메소드 설명
boolean add(Object) 맨 뒤에 연결되며 값 추가
boolean offer(Object) 내부에서 add() 호출
void addLast(Object) 맨 뒤에 연결되며 값 추가
boolean offerLast(Object) 내부에서 addLast() 호출
void addFirst(Object) 맨 앞에 값 추가
void push(Obejct) 내부에서 addFirst() 호출
boolean offerFirst(Object) 내부에서 addFirst() 호출
void add(index, Object) 인덱스를 지정하여 값 추가
boolean addAll(Collection) Collection 추가
boolean addAll(index, Collection) 인덱스를 지정하여 Collection 추가

값 반환

메소드 설명
Object getFirst() 맨 앞에 있는 값 반환 (없으면 예외 발생)
Object peek() 맨 앞에 있는 값 반환 (없으면 null 반환)
Object peekFirst() peek()과 동일한 코드
Object element() 내부에서 getFirst() 호출
Object getLast() 맨 뒤에 있는 값 반환 (없으면 예외 발생)
Object peekLast() 맨 뒤에 있는 값 반환 (없으면 null 반환)
Object get(index) 인덱스에 위치한 값 반환

값 삭제

메소드 설명
Object poll() 맨 앞에 있는 값 삭제 후 반환 (없으면 null 반환)
Object pollFirst() poll()과 동일한 코드
Object removeFirst() 맨 앞에 있는 값 삭제 후 반환
Object remove() 내부에서 removeFirst() 호출
Object pop() 내부에서 removeFirst() 호출
boolean removeFirstOccurrence(Object) 앞에서 뒤로 탐색하며 가장 먼저 찾은 객체를 삭제
Object pollLast() 맨 뒤에 있는 값 삭제 후 반환 (없으면 null 반환)
Object removeLast() 맨 뒤에 있는 값 삭제 후 반환
boolean removeLastOccurrence(Object) 뒤에서 앞으로 탐색하며 가장 먼저 찾은 객체를 삭제
boolean remove(Object) 값을 지정하여 삭제
Object remove(index) 인덱스 위치에 있는 값을 삭제 후 반환

기타 메소드

메소드 설명
boolean contains(Object) 값의 존재 여부 반환
int size() 길이 반환
Object set(index, Object) 인덱스에 위치한 값을 대체하고 이전 값을 반환
int indexOf(Object) 값의 첫 번째 인덱스 반환 (없으면 -1 반환)

항상 비어있지 않다면 예외를 발생하는 메소드(get, remove), 비어있을 가능성이 있고 예외 처리를 피하고자 하는 경우 null 값을 반환하는 메소드(peek, poll)를 상황에 따라 선택

728x90

'Java & Spring' 카테고리의 다른 글

[JAVA] Singleton Pattern (싱글톤 패턴)  (1) 2023.12.02
Check Exception vs Uncheck Exception  (0) 2023.11.10
[Java] HashMap  (1) 2023.10.19
[Java] Set(집합)의 연산  (0) 2023.10.15
[Java] JVM과 Java의 실행 순서  (0) 2023.10.12