[JAVA ] LinkedList

sgwon1996·2021년 6월 24일
0

JAVA

목록 보기
3/4

List

  • 가장 기본적인 자료구조
  • 사용하기 쉽고 데이터를 읽어 오는 시간이 가장 빠름
  • 크기를 변경 할 수 없음
  • 비 순차적인 데이터의 추가, 삭제에 시간이 많이 걸림

LinkedList

  • 불연속적으로 존재하는 데이터를 서로 연결
  • 각 요소들은 자신과 연결된 다음 요소에 대한 주소 값과 데이터로 구성
  • 데이터의 삭제, 추가가 간단
  • 이동방향이 단방향이라서 다음 요소에 대한 접근이 쉽지만 이전 요소에 대한 접근이 어려움

데이터의 삭제와 추가

데이터 삭제

  • 삭제하고자 하는 요소의 이전요소가 삭제하고자 하는 요소의 다음 요소를 참조

데이터 추가

  • 새로운 요소를 생성한 다음 추가하고자 하는 위치의 이전 요소의 참조를 새로운 요소에 대한 참조로 변경
  • 새로운 요소가 그 다음 요소를 참조

DoubleLinkedList

  • 링크드 리스트에 참조변수를 추가 해 이전 요소를 참조
  • 각 요소에 대한 이동과 접근이 쉬어서 링크드리스트 보다 많이 쓰임
  • 더블써큘러링크드리스트는 더블링크드리스트의 첫번째 요소와 마지막 요소를 연결
  • 자바 컬렉션에서는 LinkedList 클래스가 더블링크드리스트로 구현되어 있음

메서드

  • Objecet element() - 첫 번째 요소를 반환
  • boolean offer(Object o) - 객체를 끝에 추가 성공하면 true
  • Object peek() - 첫 번째 요소를 반환
  • Object poll() - 첫 번째 요소를 반환하고 제거
  • Object remove() -첫 번째 요소를 제거
  • Object pop() - 첫 번째 요소를 제거

ArrayList, LinkedList 비교

  • 순차적으로 추가/삭제하는 경우에는 ArrayList가 빠름
  • 중간 데이터를 추가/삭제하는 경우 LinkedList가 빠름
  • 데이터를 읽어오는것은 ArrayList가 더 빠름
  • ArrayList는 각 요소들이 연속적으로 메모리에 존재
  • 다루고자 하는 데이터의 개수가 변하지 않으면 ArrayList가 좋음
  • 데이터 개수의 변경이 잦다면 LinkedList가 좋음

profile
지금부터 공부하고 개발한것들을 꾸준하게 기록하자.

0개의 댓글