본문 바로가기
[개발] 언어/Java

List - LinkedList 사용하는 방법

by Devsong26 2017. 11. 18.

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의 개수를 반환합니다. 

 

 

이상으로 포스팅을 마칩니다. 

 

 

 

 


더 많은 내용을 보시려면 아래를 참고하세요.


블로그의 다른 글

 

lang package - String 사용하는 방법

1. String이란? 문자열을 나타내는 클래스입니다. 2. 특징 - Java에서 사용되는 모든 String literal은 모두 String으로 구현된 객체입니다. - String 객체를 생성 후에 객체의 문자열을 변경할 수 없습니다.

developer-syubrofo.tistory.com

 

java - Generics & Wildcard

1. Generics란? - 자바 컬렉션 프레임워크는 자료구조로써 여러 타입의 객체를 저장할 수 있다. 컬렉션은 여러 타입의 객체를 저장하기 위해 기본적으로 입력 타입을 최상위 부모 클래스인 Object 

developer-syubrofo.tistory.com

 

Apache POI

아파치 POI는 서버에 엑셀파일을 업로드하기 위해 사용해봤다. 위키백과의 설명에 따르면 아래와 같다. 아파치 POI(Apache POI)는 아파치 소프트웨어 재단에서 만든 라이브러리로서 마이크로소프

developer-syubrofo.tistory.com

 

JUnit

JUnit이란? TDD 방법론에 의해 자바에서 테스트 코드를 작성할 때 사용하는 서바 사이드 테스트 도구이다. JUnit은 단정문(테스트의 성공과 실패를 판별하는 문장)인 assert 메소드를 이용하여 테스트

developer-syubrofo.tistory.com

 

Spring으로 다국어 페이지 만들기

회사 홈페이지를 다국어로 퍼블리싱을 해야 한다는 이야기를 듣고 나서 Spring을 이용한 다국어 페이지 만드는 방법을 여러가지 검색을 해보면서 구현을 해봤다. 나는 메세지 번들까지는 사용하

developer-syubrofo.tistory.com

 

'[개발] 언어 > 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