Java LinkedList Methods
자바에서의 LinkedList 메서드 (Java LinkedList Methods)
- *
LinkedList
*는 자바에서 연결 리스트를 구현한 클래스입니다.LinkedList
는
클래스에 속하며, List 인터페이스와 Deque(덱) 인터페이스를 구현하고 있습니다. 이는 배열 기반의 **.util.LinkedList
ArrayList
*와 달리, **이중 연결 리스트(Doubly Linked List)**로 구현되어 있습니다. 요소 삽입 및 삭제 시 인덱스 이동이 필요 없으므로 중간에 요소를 추가하거나 삭제할 때 성능이 우수합니다.
LinkedList 생성
LinkedList
는 new
키워드를 사용해 생성하며, 제네릭을 사용해 데이터 타입을 지정할 수 있습니다.
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
는 이중 연결 리스트이기 때문에, 특히 중간에 삽입, 삭제 작업이 많을 때 매우 유용합니다.