본문 바로가기

Java/Java_(Array,Linked,doubly..circular)List

Java_Array List, Linked List, doubly Linked List, doubly circular linked list

반응형

예제 활용은 앞 Collections ( 컬렉션 )에서 ArrayList , Vector 에 대한 설명을 하면서

다뤘으니 예제를 위한다면  https://loapin.tistory.com/30 <-여기로 이동하기 바란다.

 

 

ArrayList

- 컬렉션을 설명하면서 가장 많이 사용했던 것이 바로 ArrayList 이다. 

- 저장순서 유지 O

- 중복 허용 O

- 기존 호환성을 위해서는 Vector 보다는 ArrayList 사용

- Object배열을 이용해서 데이터를 순차적으로 저장

- 저장할 요소의 개수를 고려해서 실제 저장할 개수보다 약간 여유롭게 갖는걸 권장한다.

  (자동적으로 크기가 늘어나지만 처리시간이 그 만큼 많이 소요된다.) 

 

**ArrayList 메서드

ArrayList 메서드

 

 

 

LinkedList 컬렉션클래스
 - 자료구조의 한 종류

 - 데이터를 읽어오는 시간이 가장 빠름 ->

   ex) 삭제를 예제로 하겠다. 삭제를 하고자 하는 요소의 이전 요소가 삭제하고자 하는

        요소의 다음 요소를 참조하도록 변경하면 된다. 하나의 참조만변경하면 삭제가

        이루어지기 때문에 배열처럼 데이터를 이동하기 위해 복사하는 과정이 없기에

        처리속도가 매우 빠르다. 
 - 데이터 목록을 연결시켜 접근할 수 있는 구조 제공
 - 선형 구조 

    <단점>

 - 크기를 변경할 수 X -> 새로운 배열을 생성후 데이터를 복사

 - 실행속도를 향상시키기 위해서 처음 초기값을 충분한 크기 배열을 생성해야 하기때문에 메모리 남비

 - 데이터 추가, 삭제 시간이 많이 걸린다.

 - 데이터를 차례대로 추가하고 , 마지막부터 삭제하는게 빠르지만 배열 중간에 데이터를 추가하려면 

   다른 데이터를 복사하기 위해 빈자리를 만들어야 한다.

 - 불연속적

LinkedList

doubly Linked List (이중 연결리스트)

- Linked List를 보완한 것 (Linked List 는 단방향을 가지기 때문에 다음요소에 대한 접근은

  쉽지만 이전요소에 대한 접근은 어렵기에,,,) 

- 단순히 Linked List에 참조변수를 하나 더 추가하여 다음 요소에 대한 참조뿐만이 아닌

  이전 요소에 대한 참조가 가능하도록 했다는것.

- 각 요소에 대한 접근과 이동이 쉽기 때문에 Linked List보다 자주 사용된다.

 

doubly circular linked list ( 더블 써큘러 링크드 리스트) (이중원형 연결리스트)

- doubly Linked List (이중 연결리스트)보다 접근성을 향상시킨 것

- 단순하다. 첫 번째 요소와 마지막 요소를 연결 시킨것.

 

 

**LinkedList 메서드 사용

LinkedList 메서드 사용

 

 

< 정리 >

1. 순차적으로 추가&삭제 하는 경우 ArrayList > LinkedList 빠르다.

2. 중간에 잇는 데이터를 추가&삭제 하는 경우  ArrayList < LinkedList  빠르다.

 

**예제로 시간체크!

** 결과 

 

 

 

반응형