배열을 이용하면 여러 변수에 값을 저장해야 하는 것들을 한번에 해결할수 있는데요, 이러한 배열과 비슷한 역할을 하지만 고정된 크기가 아닌 동적으로 크기가 조정되는 자료구조인 Collection Framework를 자바에서 제공합니다. 이번 시간에는 List, Set, Map에 대해서 설명하고, 각각의 예제 코드를 통해 이해를 돕겠습니다.
먼저 Collection Framework라는 것은 데이터를 저장, 관리, 조작하기 위한 유용한 인터페이스와 클래스들의 집합이며, 이 중 가장 일반적으로 사용되는 인터페이스로는 List, Set, Map이 있습니다.
1. List
List는 순서가 있는 데이터의 집합을 나타내며, 중복된 요소를 허용합니다. 자바에서는 ArrayList와 LinkedList가 List 인터페이스를 구현하는 대표적인 클래스입니다.
ArrayList 사용 예시
import java.util.List;
import java.util.ArrayList;
public class ListExample {
public static void main(String[] args) {
List<String> fruits = new ArrayList<String>();
fruits.add("사과");
fruits.add("바나나");
fruits.add("딸기");
fruits.add("사과");
System.out.println(fruits); // [사과, 바나나, 딸기, 사과]
System.out.println(fruits.get(2)); // 딸기
fruits.remove("사과");
System.out.println(fruits); // [바나나, 딸기, 사과]
}
}
2. Set
Set은 순서가 없는 데이터의 집합을 나타내며, 중복된 요소를 허용하지 않습니다. 자바에서 HashSet과 TreeSet이 Set 인터페이스를 구현하는 대표적인 클래스입니다. 아래는 Set 인터페이스를 사용하여 데이터를 추가하고 출력하는 예시 코드입니다.
import java.util.Set;
import java.util.HashSet;
public class SetExample {
public static void main(String[] args) {
Set<String> fruits = new HashSet<>();
fruits.add("사과");
fruits.add("바나나");
fruits.add("딸기");
fruits.add("사과"); // 중복된 값이므로 저장되지 않음
System.out.println(fruits); // [사과, 바나나, 딸기]
fruits.remove("딸기");
System.out.println(fruits); // [사과, 바나나]
}
}
3. Map
Map은 키와 값의 쌍으로 이루어진 데이터의 집합을 나타내며, 키는 중복될 수 없습니다. 자바에서 HashMap과 TreeMap이 Map 인터페이스를 구현하는 대표적인 클래스입니다. 아래는 Map 인터페이스를 사용하여 데이터를 추가하고 출력하는 예시 코드입니다.
import java.util.Map;
import java.util.HashMap;
public class MapExample {
public static void main(String[] args) {
Map<String, Integer> fruits = new HashMap<>();
// 데이터 추가
fruits.put("사과", 1);
fruits.put("바나나", 2);
fruits.put("딸기", 3);
System.out.println(fruits); // {사과=1, 바나나=2, 딸기=3}
// 데이터 출력
for (Map.Entry<String, Integer> entry : fruits.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
위의 예시 코드를 실행하면 List, Set, Map 인터페이스의 기본적인 사용 방법을 확인할 수 있습니다. Collection Framework는 다양한 메서드와 기능을 제공하여 자료구조를 효율적으로 다룰 수 있도록 도와줍니다. 이를 통해 기존의 코드를 보다 간결하고 유지보수하기 쉽게 개선할수 있습니다.