[Java] LinkedList class

SeongWon Oh·2021년 8월 18일
0

Java

목록 보기
26/39
post-thumbnail

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]
profile
블로그 이전했습니다. -> https://seongwon.dev/

0개의 댓글