자바 자료구조

☕️ [JAVA] LinkedList

King of Silicon Valley 2021. 10. 12. 16:39
728x90

자료구조 공부를 하면서 LinkedList를 구현해 보았습니다. 

 

https://kingofsiliconvalley.tistory.com/33

 

☕️ [JAVA] 연결 리스트 구현

자바로 연결리스트 자료구조를 구현해보겠습니다. 생성자 public class DoubleLinkedList { public Node head = null; public class Node { T data; Node next = null; public Node(T data){ this.data = data; }..

kingofsiliconvalley.tistory.com

 

직접 구현해 봄으로써 화이트보드 코딩으로 연결리스트를 구현해보라고 하면 자신있게 구현 할 수 있지만 

IDE를 사용 못하는 환경에서 코딩테스트를 볼 경우 연결리스트를 직접 구현해서 사용하는 짓은 살짝 미친?짓입니다. 

 

그래서 이미 자바에서 구현해 놓은 연결리스트 자료구조에 대해서 알아보겠습니다. 

 

LinkedList 선언 및 사용법

LinkedList list = new LinkedList();//타입 미설정 Object로 선언된다.
LinkedList<Student> members = new LinkedList<Student>();//타입설정 Student객체만 사용가능
LinkedList<Integer> num = new LinkedList<Integer>();//타입설정 int타입만 사용가능
LinkedList<Integer> num2 = new LinkedList<>();//new에서 타입 파라미터 생략가능
LinkedList<Integer> list2 = new LinkedList<Integer>(Arrays.asList(1,2));//생성시 값추가

 

LinkedList 값 추가

LinkedList<Integer> list = new LinkedList<Integer>();
list.addFirst(1);//가장 앞에 데이터 추가
list.addLast(2);//가장 뒤에 데이터 추가
list.add(3);//데이터 추가
list.add(1, 10);//index 1에 데이터 10 추가

add메소드로 값을 추가 할 수 있습니다. 

인덱스를 지정해서도 집어넣을 수 있습니다. 

addFirst, addLast는 각각 맨 처음과 맨끝에 데이터를 집어 넣을 수 있는 메소드입니다. 

 

Linkedlist 값 삭제 

LinkedList<Integer> list = new LinkedList<Integer>(Arrays.asList(1,2,3,4,5));
list.removeFirst(); //가장 앞의 데이터 제거
list.removeLast(); //가장 뒤의 데이터 제거
list.remove(); //생략시 0번째 index제거
list.remove(1); //index 1 제거
list.clear(); //모든 값 제거

.removefirst(), removeLast() 각 메소드는 맨 처음 값과 맨 마지막 값을 삭제 할 수 있습니다.

 

.remove() 메소드에 인자를 안넣으면 0번째 값, 인덱스를 넣으면 인덱스의 값을 삭제 합니다. 

 

.clear()메소드로 모든 값을 비울 수 있습니다. 

 

LinkdedList 크기 구하기 

LinkedList<Integer> list = new LinkedList<Integer>();
list.add(1); // [1]
list.add(2); // [1,2]
list.add(3); // [1,2,3]
list.size(); // 3

.size() 메소드로 크기를 구할 수 있습니다. 

ArrayList와 메소드가 상당히 비슷하단 걸 알 수 있습니다. 

 

LinkedList 값 조회하기 

LinkedList<Integer> list = new LinkedList<Integer>();
list.add(1); // [1]
list.add(2); // [1,2]
list.add(3); // [1,2,3]
list.get(0); // 1

get메소드의 인자에 인덱스를 넣어서 조회할 수 있습니다. 

 

LinkedList값 검색  

LinkedList<Integer> list = new LinkedList<Integer>();
list.add(1); // [1]
list.add(2); // [1,2]
list.add(3); // [1,2,3]
list.indexOf(2) // 1
list.contains(2) // true
list.contains(4) // false

 

.indexOf메소드에 인자에 값을 넣으면 값에 해당하는 인덱스를 반환 합니다. 

.contains메소드로 인자에 값을 넣으면 값의 유무를 boolean타입으로 반환합니다. 

 

 

아래 블로그를 보고 참고해서 약간의 수정과 요약을 해서 정리했습니다. 

https://coding-factory.tistory.com/552?category=758267

 

[Java] 자바 LinkedList 사용법 & 예제 총정리

LinkedList란? 연결 리스트(LinkedList)는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식의 자료구조입니다. 데이터를 담고 있는 노드들이 연결되어 있고, 노드의 포인터가 이전 노

coding-factory.tistory.com

 

 

 

 

'자바 자료구조' 카테고리의 다른 글

☕️ [JAVA] 우선순위 큐 (Priority Queue)  (0) 2021.10.12
☕️ [JAVA] HashMap  (0) 2021.10.12
☕️ [JAVA] ArrayList  (0) 2021.10.12
☕️ [JAVA] 이진 탐색트리 구현  (0) 2021.10.08
☕️ [JAVA] 해시리니어 구현  (0) 2021.10.07