1. LinkedList란?
Deque, List인터페이스를 구현한 Doubly-Linked list입니다.
2. 특징
- 노드들로 이루어져있으며, 각 Node는 [데이터 | 다음 노드의 주소값]을 갖습니다.
- 리스트의 원소에 접근하는 것은 Node를 탐색하여 찾기 때문에 ArrayList보다 느립니다.
- ArrayList보다 삽입, 삭제가 용이합니다.
- 동기화가 되지 않습니다. 동기화가 되는 LinkedList객체 생성은 다음과 같습니다.
List list = Collections.synchronized(new LinkedList(...));
- iterator()를 호출하여 Iterator객체를 가져온 후 LinkedList의 삽입, 삭제명령을 수행하면 ConcurrentModificationException이 발생합니다.
3. 설명
기본적인 LinkedList 구조입니다. Doubly-Linked List는 화살표가 양방향으로 있어야 합니다.
각 노드는 data와 다음 노드를 가리키는 주소를 갖습니다.(저는 그것을 next라고 표현했습니다.)
Node를 삭제할 경우를 살펴보겠습니다.
4번 노드를 삭제할 때는 3번 노드의 next 주소를 5번 노드로 변경해줘야 합니다.
그리고 4번 Node는 5번 노드를 가리키면 안됩니다.
이 경우, 1->2->3->5->6 순서로 탐색합니다.
Node를 추가할 경우를 살펴보겠습니다.
7번 노드를 4번 노드 다음에 추가할 경우, 4번 노드의 next를 7번 노드의 next로 대입합니다.
그리고 4번 노드의 next로 7번 노드를 가리킵니다.
그러면 1->2->3->4->7->5->6 순서로 탐색합니다.
4. 생성자
//1st Constructor
LinkedList<Double> list1 = new LinkedList<Double>();
//2st Constructor
LinkedList<Double> list2 = new LinkedList<Double>(list1);
첫번째 생성자는 빈 LinkedList객체를 생성합니다.
두번째 생성자는 입력되는 Collection 객체의 모든 원소와 동일한 원소들을 가지는 LinkedList객체를 생성합니다.
5. 메소드
모든 메소드를 설명하지 않습니다.
- add(E e) 반환형: boolean
매개변수로 입력된 element를 LinkedList객체의 끝에 추가합니다.
- clear() 반환형: void
LinkedList객체의 모든 element를 삭제합니다.
- clone() 반환형: Object
LinkedList객체와 동일한 element를 가진 LinkedList객체를 생성합니다.
생성된 객체는 원본 LinkedList와는 참조주소가 다릅니다.
- contains(Object o) 반환형: boolean
입력된 o가 LinkedList객체에 존재하면 true, 아니면 false를 반환합니다.
- get(int index) 반환형: E
입력된 index에 해당하는 element를 반환합니다.
index가 LinkedList객체의 index범위를 벗어나면 IndexOutOfBoundsException이 발생합니다.
- remove(int index) 반환형: E
입력된 index에 해당하는 element를 삭제하고 그 값을 반환합니다.
index가 LinkedList객체의 index범위를 벗어나면 IndexOutOfBoundsException이 발생합니다.
- size() 반환형: int
LinkedList객체의 element의 개수를 반환합니다.
이상으로 포스팅을 마칩니다.
더 많은 내용을 보시려면 아래를 참고하세요.
블로그의 다른 글
'[개발] 언어 > Java' 카테고리의 다른 글
java - Generics & Wildcard (0) | 2017.12.16 |
---|---|
lang package - String 사용하는 방법 (0) | 2017.11.19 |
Set - LinkedHashSet 사용하는 방법 (0) | 2017.11.17 |
Set - HashSet 사용하는 방법 (0) | 2017.11.14 |
Map - Hashtable 사용하는 방법 (0) | 2017.11.09 |