- Java 컬렉션 프레임워크는 데이터를 효율적으로 관리하고 조작할 수 있는 다양한 클래스와 인터페이스를 제공한다.
- List와 Set은 자주 사용되는 컬렉션 유형이다.
# List
- 순서가 있는 컬렉션이다.
- 중복 요소를 허용한다.
- List 인터페이스를 구현하는 클래스에는
ArrayList, LinkedList, Vector, Stack 등이 있다.
- List의 주요 특징
- 요소의 순서가 유지된다.
- 중복 요소를 허용한다.
- 인덱스를 사용하여 요소에 접근할 수 있다.
- ArrayList 예제
- ArrayList는 크기가 가변적인 배열로, 요소의 추가와 삭제가 용이하다.
import java.util.ArrayList;
public class ListExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple");
for (String item : list) {
System.out.println(item);
}
System.out.println("첫 번째 요소: " + list.get(0));
list.remove("Banana");
System.out.println("삭제 후: " + list);
}
}
Java 9이후: List.of()
- Java 9부터는
List.of() 메서드를 사용하여 불변 리스트를 생성할 수 있다.
import java.util.List;
public class ListExample {
public static void main(String[] args) {
List<String> immutableList = List.of("Apple", "Banana", "Cherry");
for (String item : immutableList) {
System.out.println(item);
}
}
}
# Set
- 순서가 없고 중복을 허용하지 않는 컬렉션이다.
- Set 인터페이스를 구현하는 클래스에는
HashSet, LinkedHashSet, TreeSet 등이 있다.
- Set의 주요 특징
- 요소의 순서가 유지되지 않는다. (단,
LinkedHashSet과 TreeSet은 예외)
- 중복 요소를 허용하지 않는다.
- HashSet 예제
- 해시 테이블을 사용하여 요소를 저장하므로, 빠른 검색과 삽입이 가능하다.
import java.util.HashSet;
public class SetExample {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple");
for (String item : set) {
System.out.println(item);
}
set.remove("Banana");
System.out.println("삭제 후: " + set);
}
}
Java 9이후: Set.of()
- Java 9부터는
Set.of() 메서드를 사용하여 불변 집합을 생성할 수 있다.
import java.util.Set;
public class SetExample {
public static void main(String[] args) {
Set<String> immutableSet = Set.of("Apple", "Banana", "Cherry");
for (String item : immutableSet) {
System.out.println(item);
}
}
}
# List와 Set의 차이점
| 자료형 | List | Set |
|---|
| 순서 | 요소의 순서를 유지 | 요소의 순서를 유지하지 않음 (LinkedHashSet과 TreeSet 제외) |
| 중복 | 중복 요소 허용 | 중복 요소 허용하지 않음 |
| 접근 방식 | 인덱스를 사용한 요소 접근 가능 | 인덱스를 사용한 접근 불가 |
| 구현 클래스 | ArrayList, LinkedList, Vector 등 | HashSet, LinkedHashSet, TreeSet 등 |