📙 목차
🧡 학습 목표
- Java 에서 컬렉션을 학습한다.
1. 컬렉션(Collection)이란?
- 자바 컬렉션 프레임워크는 이러한 자료구조들을 쉽게 사용할 수 있도록 인터페이스와 구현체(ArrayList, HashSet, HashMap 등)를 제공하는 집합이다.
- 컬렉션을 통해 데이터 저장, 조회, 삭제, 정렬 등 다양한 기능을 간편하게 구현할 수 있다.
- 배열과 다르게 컬렉션은 길이를 동적으로 변경할 수 있다.
- 추가, 삭제 시 유연하게 길이가 변경된다.
Collections (Java Platform SE 8 )
Rotates the elements in the specified list by the specified distance. After calling this method, the element at index i will be the element previously at index (i - distance) mod list.size(), for all values of i between 0 and list.size()-1, inclusive. (Thi
docs.oracle.com
2. 배열의 한계
- 배열은 크기가 고정되어 있어서 한 번 설정하면 길이를 변경할 수 없다. → 배열의 길이 초과 시 에러가 발생한다.
// 배열은 길이가 고정됨
int[] numbers = new int[3];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
numbers[3] = 40; // ❌ 요소 추가시 에러발생
3. 컬렉션 종류와 특징
인터페이스 | 특징 | 구현체 |
List | 순서 유지, 중복 허용 | ArrayList |
Set | 순서 없음, 중복 불가 | HashSet |
Map | 키-값 구조, 키 중복 불가 | HashMap |
List 인터페이스를 구현한 ArrayList
- List 의 대표적인 구현체로는 ArrayList , LinkedList가 있다.
- ArrayList 는 요소의 순서를 유지하고 중복된 값을 저장할 수 있는 자료구조이다.
// List 를 구현한 ArrayList
ArrayList<String> names = new ArrayList<>();
names.add("Spartan"); // 1 번째 요소 추가
names.add("Steve"); // 2 번째 요소 추가
names.add("Isac"); // 3 번째 요소 추가
names.add("1");
names.add("2");
// ✅ 순서 보장
System.out.println("names = " + names);
// ✅ 중복 데이터 허용
names.add("Spartan");
System.out.println("names = " + names);
// ✅ 단건 조회
System.out.println("1 번째 요소 조회: " + names.get(0)); // 조회 Spartan
// ✅ 데이터 삭제
names.remove("Steve");
System.out.println("names = " + names);
Set 인터페이스를 구현한 HashSet
- Set 의 대표적인 구현체로는 HashSet , TreeSet 이 있다.
- HashSet 은 순서를 유지하지 않고 중복을 허용하지 않는다.
- 순서를 보장하지 않기 때문에 get() 지원을 하지 않는다.
// Set 을 구현한 HashSet
HashSet<String> uniqueNames = new HashSet<>();
// ✅ 추가
uniqueNames.add("Spartan");
uniqueNames.add("Steve");
uniqueNames.add("Isac");
uniqueNames.add("1");
uniqueNames.add("2");
// ⚠️ 순서를 보장 안함
System.out.println("uniqueNames = " + uniqueNames);
uniqueNames.get(0); // ❌ get 사용 불가
// ⚠️ 중복 불가
uniqueNames.add("Spartan");
System.out.println("uniqueNames = " + uniqueNames);
// ✅ 제거
uniqueNames.remove("Spartan");
System.out.println("uniqueNames = " + uniqueNames);
Map 인터페이스를 구현한 HashMap
- 대표적인 구현체로는 HashMap, TreeMap 이 있다.
- HashMap 은 키(Key) - 값(Value) 구조로 데이터를 저장한다. (키: 값)
- 키(Key) 는 중복될 수 없지만 값(Value) 은 중복 가능하다.
// Map 을 구현한 HashMap
HashMap<String, Integer> memberMap = new HashMap<>();
// ✅ 추가
memberMap.put("Spartan", 15);
memberMap.put("Steve", 15); // ✅ 값은 중복 가능
memberMap.put("Isac", 1);
memberMap.put("John", 2);
memberMap.put("Alice", 3);
// ⚠️ 순서 보장 안함
System.out.println("memberMap = " + memberMap);
// ⚠️ 키 중복 불가: 값 덮어쓰기 발생
memberMap.put("Alice", 5);
System.out.println("memberMap = " + memberMap);
// ✅ 조회: 15
System.out.println(memberMap.get("Steve"));
// ✅ 삭제 가능
memberMap.remove("Spartan");
System.out.println("memberMap = " + memberMap);
// ✅ 키 확인
Set<String> keys = memberMap.keySet();
System.out.println("keys = " + keys);
// ✅ 값 확인
Collection<Integer> values = memberMap.values();
System.out.println("values = " + values);
4. 실습 과제
ArrayList 로 장바구니를 구현해 보세요.
- 장바구니 상품: 양파, 사과, 생선, 두부
- 기능1: 상품추가(addProduct)
- 기능2: 장바구니 목록 출력(printCart)
- 기능3: 상품 삭제(removeProduct)
- 기능4: 총 가격 계산(calculateTotalPrice)
(강의 자료)
public class Product {
private String name;
private int price;
public Product(String name, int price) {
this.name = name;
this.price = price;
}
public String getName() {
return this.name;
}
public int getPrice() {
return this.price;
}
}
import java.util.*;
public class Cart {
private List<Product> cart = new ArrayList<>();
// 상품 추가 기능
public void addProduct(Product product) {
cart.add(product);
System.out.println(product.getName() + " 가 장바구니에 추가 되었습니다.");
}
// 상품 제거 기능
public void removeProduct(String removeProductName) {
boolean removed = false;
for (Product product : cart) {
String foundProductName = product.getName();
if (foundProductName.equals(removeProductName)) {
cart.remove(product);
removed = true;
System.out.println(product.getName() + "가 장바구니에서 제거 되었습니다.");
break;
}
}
if (!removed) {
System.out.println("해당 상품이 장바구니에 없습니다.");
}
}
// 장바구니 목록 출력 기능
public void printCart() {
if (cart.isEmpty()) {
System.out.println("장바구니가 비어 있습니다.");
} else {
for (Product product : cart) {
System.out.println(product.getName() + ": " + product.getPrice());
}
}
}
// 장바구니 총 상품 가격 조회 기능
public void calculateTotalPrice() {
int total = 0;
for (Product product : cart) {
total += product.getPrice();
}
System.out.println("총 금액은: " + total);
}
}
public class Main {
public static void main(String[] args) {
Cart cart = new Cart();
Product onion = new Product("양파", 3000);
Product apple = new Product("사과", 10000);
Product fish = new Product("생선", 12000);
Product tofu = new Product("두부", 2000);
// 장바구니에 상품 추가
System.out.println("장바구니 상품 추가: ");
cart.addProduct(onion);
cart.addProduct(apple);
cart.addProduct(fish);
cart.addProduct(tofu);
System.out.println();
// 장바구니 상품 조회
System.out.println("장바구니 상품 조회: ");
cart.printCart();
System.out.println();
// 장바구니 총 금액 조회
System.out.println("장바구니 총 금액 조회: ");
cart.calculateTotalPrice();
System.out.println();
// 장바구니 상품 제거(사과)
System.out.println("장바구니에서 사과 제거: ");
cart.removeProduct("사과");
System.out.println();
// 장바구니 상품 조회
System.out.println("장바구니 상품 조회: ");
cart.printCart();
System.out.println();
// 장바구니 총 금액 조회
System.out.println("장바구니 총 금액 조회: ");
cart.calculateTotalPrice();
System.out.println();
}
}
'Java > 강의' 카테고리의 다른 글
[📙 Java 문법 종합반] 3-5. 람다(Lambda) (0) | 2025.04.16 |
---|---|
[📙 Java 문법 종합반] 3-4. 제네릭(Generic) (0) | 2025.04.16 |
[📙 Java 문법 종합반] 3-2. Optional - null 을 다루는 법 (0) | 2025.04.16 |
[📙 Java 문법 종합반] 3-1. 예외(Exception)과 예외처리(try-catch) (0) | 2025.04.16 |
[📙 Java 문법 종합반] 2-10. 객체지향 PART 4 - 다형성 (0) | 2025.04.15 |