Java에서 List
를 선언하고 사용하는 방법은 매우 중요하며, 다양한 방식으로 이를 활용할 수 있습니다. List
는 Java Collections Framework의 일부이며, 요소의 순서를 유지하고 중복된 요소를 허용하는 컬렉션입니다. 주로 ArrayList
, LinkedList
같은 구현체를 사용합니다. 여기서는 List
를 선언하고 사용하는 기본적인 방법을 설명하겠습니다.
1. List
인터페이스와 구현체 선언
List
는 인터페이스로, 이를 구현하는 여러 클래스들이 있습니다. 가장 흔히 사용되는 ArrayList
와 LinkedList
를 예로 들어 설명하겠습니다.
import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;
public class ListExample {
public static void main(String[] args) {
// ArrayList 선언
List<String> arrayList = new ArrayList<>();
// LinkedList 선언
List<String> linkedList = new LinkedList<>();
}
}
2. List
에 요소 추가하기
List
에 요소를 추가할 때는 add()
메소드를 사용합니다.
import java.util.List;
import java.util.ArrayList;
public class ListExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
// 요소 추가
list.add("Apple");
list.add("Banana");
list.add("Cherry");
// 리스트 출력
System.out.println("List: " + list);
}
}
출력 결과:
List: [Apple, Banana, Cherry]
3. 특정 위치에 요소 추가하기
List
는 특정 인덱스에 요소를 추가할 수 있습니다.
import java.util.List;
import java.util.ArrayList;
public class ListExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add(1, "Orange"); // 인덱스 1에 요소 추가
System.out.println("List: " + list);
}
}
출력 결과:
List: [Apple, Orange, Banana]
4. List
에서 요소 가져오기
get()
메소드를 사용하여 특정 인덱스의 요소를 가져올 수 있습니다.
import java.util.List;
import java.util.ArrayList;
public class ListExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
String secondElement = list.get(1); // 인덱스 1의 요소 가져오기
System.out.println("Second element: " + secondElement);
}
}
출력 결과:
Second element: Banana
5. List
에서 요소 제거하기
remove()
메소드를 사용하여 특정 인덱스 또는 특정 요소를 제거할 수 있습니다.
import java.util.List;
import java.util.ArrayList;
public class ListExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
list.remove(1); // 인덱스 1의 요소 제거
list.remove("Cherry"); // "Cherry" 요소 제거
System.out.println("List after removal: " + list);
}
}
출력 결과:
List after removal: [Apple]
6. List
의 크기 확인하기
size()
메소드를 사용하여 List
의 크기를 확인할 수 있습니다.
import java.util.List;
import java.util.ArrayList;
public class ListExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
int size = list.size(); // 리스트의 크기 확인
System.out.println("Size of list: " + size);
}
}
출력 결과:
Size of list: 2
7. List
의 모든 요소 순회하기
for
루프 또는 for-each
루프를 사용하여 List
의 모든 요소를 순회할 수 있습니다.
import java.util.List;
import java.util.ArrayList;
public class ListExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
// 전통적인 for 루프
for (int i = 0; i < list.size(); i++) {
System.out.println("Element at index " + i + ": " + list.get(i));
}
// for-each 루프
for (String element : list) {
System.out.println("Element: " + element);
}
}
}
출력 결과:
Element at index 0: Apple
Element at index 1: Banana
Element at index 2: Cherry
Element: Apple
Element: Banana
Element: Cherry
8. List
의 다른 유용한 메소드들
List
에는 추가적으로 유용한 메소드들이 많이 있습니다. 예를 들어, contains()
, indexOf()
, clear()
등이 있습니다.
import java.util.List;
import java.util.ArrayList;
public class ListExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
// 요소 포함 여부 확인
boolean containsBanana = list.contains("Banana");
System.out.println("List contains Banana: " + containsBanana);
// 요소의 인덱스 찾기
int indexOfCherry = list.indexOf("Cherry");
System.out.println("Index of Cherry: " + indexOfCherry);
// 리스트 비우기
list.clear();
System.out.println("List after clear: " + list);
}
}
출력 결과:
List contains Banana: true
Index of Cherry: 2
List after clear: []
9. 다양한 List
구현체
ArrayList
외에도 다양한 List
구현체가 있으며, 사용 용도에 따라 적절한 구현체를 선택할 수 있습니다. 예를 들어:
ArrayList
: 동적 배열 기반으로 빠른 랜덤 접근과 적은 메모리 오버헤드를 제공합니다. 요소 추가와 삭제는 비용이 클 수 있습니다.LinkedList
: 이중 연결 리스트로 구현되어 있으며, 요소 추가와 삭제가 빠릅니다. 그러나 인덱스 기반 접근이 느립니다.Vector
:ArrayList
와 유사하지만, 동기화된 메소드들을 제공합니다. 멀티스레드 환경에서 사용할 수 있지만, 요즘에는 잘 사용되지 않습니다.CopyOnWriteArrayList
: 멀티스레드 환경에서 쓰기 작업 시 새로운 복사본을 생성하여 동시성 문제를 피할 수 있도록 설계되었습니다.
예제: LinkedList
사용
import java.util.List;
import java.util.LinkedList;
public class LinkedListExample {
public static void main(String[] args) {
List<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
System.out.println("LinkedList: " + list);
}
}
출력 결과:
LinkedList: [Apple, Banana, Cherry]
이 예제에서는 LinkedList
를 사용하여 List
를 선언하고 요소를 추가하는 방법을 보여줍니다.
결론
List
는 Java에서 매우 유용한 데이터 구조로, 다양한 구현체와 메소드를 통해 강력한 기능을 제공합니다. 필요에 따라 적합한 구현체를 선택하고, List
의 메소드를 활용하여 효율적인 코드 작성을 할 수 있습니다.
'언어 > Java' 카테고리의 다른 글
[ Java ] ClassPath 설정하기 (0) | 2024.06.15 |
---|---|
[ Java ] List 복사하기 (0) | 2024.06.13 |
[ Java ] 자바 대입연산자 사용하기 (1) | 2024.06.09 |
[ Java ] 삼항 연산자 사용해보기 (0) | 2024.06.09 |
[ Java ] 논리 연산자 사용하기 (0) | 2024.06.09 |