[Java] LinkedList class
LinkedList
-
LinkedList는 ArrayList와 같이 List를 구체화한 클래스이다.
-
ArrayList는 하나의 큰 배열을 사용하여 구현하였다면, LinkedList는 각각의 node를 연결하는 방식을 사용한다.
-
LinkedList는 양뱡향 연결 리스트(Doubly Linked List)로 구현되어있다.
-
node들은 이전과 다음 node의 주소값을 갖고 있으며 데이터 추가, 삭제가 원활하다는 장점이 있다.
-
ArrayList는 검색이 많은 경우에 많이 사용하고 LinkedList는 삽입/삭제가 자주 있을 때 사용한다.
Linked List 생성
LinkedList<Integer> coffeeMenu = new LinkedList<Integer>(); // 타입 지정, 일반적인 방법
LinkedList<Integer> integers2 = new LinkedList<>(); // 타입 생략 가능
LinkedList<Integer> integers3 = new LinkedList<>(coffeeMenu); // 다른 Collection값으로 초기화
LinkedList<Integer> integers4 = new LinkedList<>(Arrays.asList(1, 2, 3, 4, 5)); // Arrays.asList()
Data 추가
-
LinkedList의 데이터 추가는 add() method를 통해 추가를 한다.
-
add의 경우 (index, value)의 순으로 parameter를 주며 index값을 주지 않을 경우 맨 뒤에 붙게된다.
-
index의 경우 array와 똑같이 0부터 시작한다.
coffeeMenu.add("아메리카노");
coffeeMenu.add(2,"아이스티");
Data 삭제
-
데이터 삭제는 remove method를 통해 할 수 있다.
-
remove의 parameter는 index값 또는 실제 값을 입력할 수 있으며 parameter를 주지 않았을 경우 맨 앞의 수가 삭제된다.
-
remove는 삭제한 값을 return함으로 return값을 받을 수도 있다.
- 실제 값을 통해 삭제를 하는 경우 return값은 true/false로 return한다.
- 그 외의 index값이나 아무 값도 입력하지 않았을 때는 삭제되는 값을 return한다.
coffeeMenu.remove(3);
coffeeMenu.remove("카푸치노");
coffeeMenu.remove();
LinkedList 출력
// linked list값 출력 (for문 이용 예시)
for(String menu:coffeeMenu) {
System.out.print(menu+" ");
}
// linked list값 출력 (Iterator이용 예시)
Iterator<String> iterator = coffeeMenu.iterator();
while(iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
👨🏻💻 Example Full Code
package ch04_1;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Iterator;
public class LinkedListTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
/* 아래의 방법으로도 LinkedList생성 가능
LinkedList<Integer> coffeeMenu = new LinkedList<Integer>(); // 타입 지정, 일반적인 방법
LinkedList<Integer> integers2 = new LinkedList<>(); // 타입 생략 가능
LinkedList<Integer> integers3 = new LinkedList<>(coffeeMenu); // 다른 Collection값으로 초기화
LinkedList<Integer> integers4 = new LinkedList<>(Arrays.asList(1, 2, 3, 4, 5)); // Arrays.asList()
*/
LinkedList<String> coffeeMenu = new LinkedList<String>();
// add를 통해 element추가가 가능하다.
coffeeMenu.add("아메리카노");
coffeeMenu.add("카푸치노");
// add의 경우 (index, value)의 순으로 parameter를 주며 index값을 주지 않을 경우 맨 뒤에 붙게된다.
// index의 경우 array와 똑같이 0부터 시작.
coffeeMenu.add(1,"마끼야또");
coffeeMenu.add(1,"아포가토");
coffeeMenu.add(2,"아이스티");
System.out.println(coffeeMenu+"\n");
// 데이터 삭제는 remove method를 통해 할 수 있다.
// remove의 parameter는 index값 또는 실제 값을 입력할 수 있으며
// parameter를 주지 않았을 경우 맨 앞의 수가 삭제된다.
// remove는 삭제한 값을 return함으로 return값을 받을 수도 있다.
System.out.println("Delete "+coffeeMenu.remove(3));
System.out.println(coffeeMenu+"\n");
System.out.println("Delete "+coffeeMenu.remove("카푸치노"));
// 실제 값을 통해 삭제를 하는 경우 return값은 true/false로 return한다.
// 그 외의 index값이나 아무 값도 입력하지 않았을 때는 삭제되는 값을 return
System.out.println(coffeeMenu+"\n");
String deleteMenu = coffeeMenu.remove();
System.out.println("Delete "+ deleteMenu);
System.out.println(coffeeMenu+"\n");
// 모든 값을 삭제하고 싶다면 clear()를 호출하면 된다.
// linked list값 출력 (for문 이용 예시)
for(String menu:coffeeMenu) {
System.out.print(menu+" ");
}
// linked list값 출력 (Iterator이용 예시)
Iterator<String> iterator = coffeeMenu.iterator();
while(iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
}
}
Reference
- [https://psychoria.tistory.com/767]
Author And Source
이 문제에 관하여([Java] LinkedList class), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@seongwon97/Java-LinkedList-class저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)