코딩 스쿨 Java

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

Java LinkedList Methods

자바에서의 LinkedList 메서드 (Java LinkedList Methods)

  • *LinkedList*는 자바에서 연결 리스트를 구현한 클래스입니다. LinkedList
    .util.LinkedList 클래스에 속하며, List 인터페이스Deque(덱) 인터페이스를 구현하고 있습니다. 이는 배열 기반의 **ArrayList*와 달리, **이중 연결 리스트(Doubly Linked List)**로 구현되어 있습니다. 요소 삽입 및 삭제 시 인덱스 이동이 필요 없으므로 중간에 요소를 추가하거나 삭제할 때 성능이 우수합니다.

LinkedList 생성

LinkedListnew 키워드를 사용해 생성하며, 제네릭을 사용해 데이터 타입을 지정할 수 있습니다.

LinkedList 생성 예시

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        // String 타입의 LinkedList 생성
        LinkedList<String> fruits = new LinkedList<>();

        // 정수형 LinkedList 생성
        LinkedList<Integer> numbers = new LinkedList<>();
    }
}

설명:

  • LinkedList<String>: 문자열 타입의 요소만 저장할 수 있습니다.
  • LinkedList<Integer>: 정수 타입의 요소만 저장할 수 있습니다.

주요 LinkedList 메서드

1. add(): 요소 추가

add() 메서드는 LinkedList요소를 추가합니다. 기본적으로 리스트의 끝에 추가되지만, 인덱스를 지정하여 특정 위치에 삽입할 수도 있습니다.

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<>();

        // 요소 추가
        fruits.add("Apple");
        fruits.add("Banana");

        // 특정 인덱스에 요소 삽입
        fruits.add(1, "Orange");

        System.out.println(fruits);  // 출력: [Apple, Orange, Banana]
    }
}

2. get(): 특정 요소 가져오기

get() 메서드는 LinkedList에서 특정 인덱스의 요소를 가져옵니다.

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<>();
        fruits.add("Apple");
        fruits.add("Banana");

        // 인덱스 0의 요소 가져오기
        String fruit = fruits.get(0);
        System.out.println(fruit);  // 출력: Apple
    }
}

3. set(): 요소 수정

set() 메서드는 LinkedList특정 인덱스에 있는 요소를 다른 값으로 수정합니다.

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<>();
        fruits.add("Apple");
        fruits.add("Banana");

        // 인덱스 1의 요소 수정
        fruits.set(1, "Orange");

        System.out.println(fruits);  // 출력: [Apple, Orange]
    }
}

4. remove(): 요소 제거

remove() 메서드는 LinkedList에서 특정 인덱스 또는 특정 값을 가진 요소를 제거합니다.

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");

        // 인덱스 1의 요소 제거
        fruits.remove(1);

        // 특정 값을 가진 요소 제거
        fruits.remove("Orange");

        System.out.println(fruits);  // 출력: [Apple]
    }
}

5. size(): 리스트 크기 반환

size() 메서드는 LinkedList의 **현재 크기(요소의 개수)**를 반환합니다.

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<>();
        fruits.add("Apple");
        fruits.add("Banana");

        // 리스트 크기 출력
        System.out.println(fruits.size());  // 출력: 2
    }
}

6. isEmpty(): 리스트가 비어있는지 확인

isEmpty() 메서드는 LinkedList비어있는지 여부를 확인합니다. 비어 있으면 true, 그렇지 않으면 false를 반환합니다.

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<>();

        // 리스트가 비어있는지 확인
        System.out.println(fruits.isEmpty());  // 출력: true

        fruits.add("Apple");

        System.out.println(fruits.isEmpty());  // 출력: false
    }
}

7. contains(): 특정 요소 포함 여부 확인

contains() 메서드는 LinkedList특정 요소가 포함되어 있는지 확인합니다. 포함되어 있으면 true, 그렇지 않으면 false를 반환합니다.

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<>();
        fruits.add("Apple");
        fruits.add("Banana");

        // 리스트에 특정 요소 포함 여부 확인
        System.out.println(fruits.contains("Apple"));  // 출력: true
        System.out.println(fruits.contains("Orange"));  // 출력: false
    }
}

8. clear(): 모든 요소 제거

clear() 메서드는 LinkedList모든 요소를 제거하여 빈 리스트로 만듭니다.

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<>();
        fruits.add("Apple");
        fruits.add("Banana");

        // 모든 요소 제거
        fruits.clear();

        System.out.println(fruits);  // 출력: []
    }
}

9. indexOf(): 특정 요소의 인덱스 찾기

indexOf() 메서드는 LinkedList에서 특정 요소가 처음으로 나타나는 인덱스를 반환합니다. 요소가 없으면 -1을 반환합니다.

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Apple");

        // 특정 요소의 인덱스 찾기
        System.out.println(fruits.indexOf("Apple"));  // 출력: 0
        System.out.println(fruits.indexOf("Orange"));  // 출력: -1
    }
}

10. addFirst()addLast(): 처음 또는 끝에 요소 추가

  • addFirst(): 리스트의 첫 번째에 요소를 추가합니다.
  • addLast(): 리스트의 마지막에 요소를 추가합니다.
import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<>();
        fruits.add("Banana");

        // 첫 번째에 요소 추가
        fruits.addFirst("Apple");

        // 마지막에 요소 추가
        fruits.addLast("Orange");

        System.out.println(fruits);  // 출력: [Apple, Banana, Orange]
    }
}

11. getFirst()getLast(): 첫 번째 및 마지막 요소 가져오기

  • getFirst(): 리스트의 첫 번째 요소를 반환합니다.
  • getLast(): 리스트의 마지막 요소를 반환합니다.
import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");

        // 첫 번째 및 마지막 요소 가져오기
        System.out.println("첫 번째: " + fruits.getFirst());  // 출력: Apple
        System.out.println("마지막: " + fruits.getLast());    // 출력: Orange
    }
}

12. removeFirst()removeLast(): 첫 번째 및 마지막 요소 제거

  • removeFirst(): 리스트의 첫 번째 요소를 제거합니다.
  • removeLast(): 리스트의 마지막 요소를 제거합니다.
import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");

        // 첫 번째 요소 제거
        fruits.removeFirst();

        // 마지막 요소 제거
        fruits.removeLast();

        System.out.println(fruits);  // 출력: [Banana]
    }
}

13. forEach(): 모든 요소

에 대해 작업 수행 forEach() 메서드는 LinkedList모든 요소에 대해 작업을 수행하는 람다식을 사용할 수 있습니다.

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");

        // forEach()를 사용하여 리스트 요소 출력
        fruits.forEach(fruit -> System.out.println(fruit));
    }
}

출력:

Apple
Banana
Orange

14. offer(), poll(), peek(): 큐 관련 메서드

  • offer(): 리스트의 끝에 요소를 추가합니다. (큐의 enqueue와 유사)
  • poll(): 리스트의 첫 번째 요소를 가져오고 제거합니다. (큐의 dequeue와 유사)
  • peek(): 리스트의 첫 번째 요소를 가져오지만 제거하지 않음.
import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> queue = new LinkedList<>();

        // offer로 요소 추가
        queue.offer("Apple");
        queue.offer("Banana");
        queue.offer("Orange");

        // peek으로 첫 번째 요소 확인 (제거 안 함)
        System.out.println("첫 번째 요소: " + queue.peek());  // 출력: Apple

        // poll로 첫 번째 요소 가져오고 제거
        System.out.println("제거된 요소: " + queue.poll());  // 출력: Apple

        System.out.println(queue);  // 출력: [Banana, Orange]
    }
}

요약

자바의 LinkedList 클래스는 연결 리스트를 구현한 자료구조로, 삽입과 삭제가 빈번하게 일어나는 경우 매우 효율적입니다. 주요 메서드는 다음과 같습니다:

  • add(): 요소 추가
  • get(), set(): 특정 인덱스의 요소 가져오기 또는 수정
  • remove(), clear(): 요소 제거 또는 전체 삭제
  • addFirst(), addLast(): 리스트의 처음 또는 끝에 요소 추가
  • getFirst(), getLast(): 첫 번째 및 마지막 요소 가져오기
  • removeFirst(), removeLast(): 첫 번째 및 마지막 요소 제거
  • offer(), poll(), peek(): 큐와 같은 방식으로 동작

LinkedList이중 연결 리스트이기 때문에, 특히 중간에 삽입, 삭제 작업이 많을 때 매우 유용합니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com