개발/자바
컬렉션 사용의 필요성
피터JK
2025. 2. 20. 11:01
728x90
✅ 컬렉션 사용의 필요성과 다양한 예제
자바에서 Collection 프레임워크를 사용하는 이유와 함께, List, Set, Map 등의 다양한 예제를 소개하겠습니다.
🔹 1. 컬렉션을 사용하는 이유
- 배열의 한계를 극복
- 배열은 크기가 고정되어 있으며, 크기를 변경하려면 새로운 배열을 만들어야 함.
- 컬렉션은 동적으로 크기가 조정됨.
- 데이터 구조 관리가 용이
- List, Set, Map 등 다양한 데이터 구조를 쉽게 구현 가능.
- 내장 메서드를 통한 편리한 데이터 처리
- 요소 추가, 삭제, 탐색 등을 손쉽게 수행.
🔹 2. List (순서가 있는 자료구조, 중복 허용)
📌 ArrayList 사용 예제
import java.util.ArrayList;
import java.util.List;
public class ListExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
// 요소 추가
list.add("Java");
list.add("Python");
list.add("JavaScript");
// 요소 가져오기
System.out.println("첫 번째 요소: " + list.get(0)); // Java
// 반복문 활용
for (String lang : list) {
System.out.println("언어: " + lang);
}
// 크기 확인
System.out.println("리스트 크기: " + list.size());
// 요소 삭제
list.remove("Python");
System.out.println("Python 삭제 후 리스트: " + list);
}
}
✔ 특징: 순서 유지, 중복 허용.
🔹 3. Set (순서가 없고 중복을 허용하지 않는 자료구조)
📌 HashSet 사용 예제
import java.util.HashSet;
import java.util.Set;
public class SetExample {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
// 요소 추가
set.add("Apple");
set.add("Banana");
set.add("Orange");
set.add("Apple"); // 중복 추가 (무시됨)
// 출력
System.out.println("Set 요소: " + set);
// 포함 여부 확인
System.out.println("Apple 포함 여부: " + set.contains("Apple"));
// 반복문 사용
for (String fruit : set) {
System.out.println("과일: " + fruit);
}
// 요소 삭제
set.remove("Banana");
System.out.println("Banana 삭제 후 Set: " + set);
}
}
✔ 특징: 중복 제거 기능, 순서 보장 X (LinkedHashSet 사용 시 순서 유지).
🔹 4. Map (키-값 쌍으로 데이터를 저장)
📌 HashMap 사용 예제
import java.util.HashMap;
import java.util.Map;
public class MapExample {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
// 요소 추가
map.put(1, "사과");
map.put(2, "바나나");
map.put(3, "체리");
// 값 가져오기
System.out.println("Key 1의 값: " + map.get(1));
// 모든 키-값 출력
for (Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
// 키 포함 여부 확인
System.out.println("Key 2 존재 여부: " + map.containsKey(2));
// 요소 삭제
map.remove(2);
System.out.println("Key 2 삭제 후: " + map);
}
}
✔ 특징: 키를 기준으로 값에 접근, 중복 키 허용 X.
🔹 5. 컬렉션 활용 예제
📌 학생 목록 관리 (List 활용)
import java.util.ArrayList;
import java.util.List;
class Student {
String name;
int age;
Student(String name, int age) {
this.name = name;
this.age = age;
}
}
public class StudentListExample {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
// 학생 추가
students.add(new Student("홍길동", 20));
students.add(new Student("김철수", 22));
students.add(new Student("이영희", 21));
// 학생 목록 출력
for (Student s : students) {
System.out.println("이름: " + s.name + ", 나이: " + s.age);
}
}
}
✔ 활용 예시: 학생 목록을 관리할 때 List 활용.
📌 상품 재고 관리 (Map 활용)
import java.util.HashMap;
import java.util.Map;
public class InventorySystem {
public static void main(String[] args) {
Map<String, Integer> inventory = new HashMap<>();
// 재고 추가
inventory.put("Laptop", 5);
inventory.put("Mouse", 10);
inventory.put("Keyboard", 8);
// 특정 상품의 재고 확인
System.out.println("Laptop 재고: " + inventory.get("Laptop"));
// 전체 재고 목록 출력
for (Map.Entry<String, Integer> entry : inventory.entrySet()) {
System.out.println("상품: " + entry.getKey() + ", 수량: " + entry.getValue());
}
// 재고 감소
inventory.put("Mouse", inventory.get("Mouse") - 2);
System.out.println("Mouse 판매 후 재고: " + inventory.get("Mouse"));
}
}
✔ 활용 예시: 상품별 재고 관리.
🔹 6. 컬렉션 정렬 (Comparator 사용)
📌 학생 목록을 나이순으로 정렬
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class Student {
String name;
int age;
Student(String name, int age) {
this.name = name;
this.age = age;
}
}
public class StudentSortExample {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("홍길동", 20));
students.add(new Student("김철수", 22));
students.add(new Student("이영희", 21));
// 나이순 정렬
Collections.sort(students, Comparator.comparingInt(s -> s.age));
// 정렬된 목록 출력
for (Student s : students) {
System.out.println("이름: " + s.name + ", 나이: " + s.age);
}
}
}
✔ 활용 예시: 데이터 정렬이 필요한 경우.
🔹 7. 결론
- List → 순서가 있는 데이터 저장 (ex: 학생 목록)
- Set → 중복을 허용하지 않는 데이터 저장 (ex: 중복 없는 태그 목록)
- Map → 키-값 형태로 저장 (ex: 상품 재고 관리)
- 컬렉션을 활용하면 다양한 데이터 구조를 쉽게 구현하고 관리 가능!
728x90