dev.syw

List, Set, Map과 제네릭, 순회, 자주 쓰는 메서드를 다룬다.

컬렉션 프레임워크

여러 데이터를 한데 모아 다룰 때 배열보다 편리한 것이 컬렉션입니다. 크기가 자동으로 늘고, 추가/삭제/검색 메서드가 풍부합니다. List, Set, Map이 가장 많이 쓰이는 세 가지입니다.

학습 목표

  • List/ArrayList로 순서 있는 데이터를 다룬다.
  • Set/HashSet으로 중복 없는 데이터를 다룬다.
  • Map/HashMap으로 키-값 쌍을 다룬다.
  • 제네릭과 순회 방법을 이해한다.

List와 ArrayList

List는 순서가 있고 중복을 허용하는 컬렉션입니다. 가장 많이 쓰는 구현체가 ArrayList입니다. <> 안에 담을 타입을 적는 것이 제네릭입니다.

import java.util.ArrayList;
import java.util.List;

List<String> names = new ArrayList<>();
names.add("홍길동");
names.add("김철수");
names.add("홍길동");      // 중복 허용

System.out.println(names.size());   // 3
System.out.println(names.get(0));   // 홍길동
names.remove("김철수");
System.out.println(names);          // [홍길동, 홍길동]

💡 TIP — 제네릭 <String>을 지정하면 다른 타입을 넣으려 할 때 컴파일러가 막아 줍니다. 꺼낼 때 형변환도 필요 없습니다.

Set과 HashSet

Set은 중복을 허용하지 않습니다. 같은 값을 여러 번 넣어도 하나만 저장됩니다. HashSet은 순서를 보장하지 않습니다.

import java.util.HashSet;
import java.util.Set;

Set<String> tags = new HashSet<>();
tags.add("java");
tags.add("backend");
tags.add("java");   // 무시됨

System.out.println(tags.size());          // 2
System.out.println(tags.contains("java")); // true

Map과 HashMap

Map은 키와 값을 쌍으로 저장합니다. 키로 값을 빠르게 찾을 수 있습니다.

import java.util.HashMap;
import java.util.Map;

Map<String, Integer> scores = new HashMap<>();
scores.put("홍길동", 90);
scores.put("김철수", 85);

System.out.println(scores.get("홍길동"));        // 90
System.out.println(scores.containsKey("김철수")); // true
System.out.println(scores.getOrDefault("이영희", 0)); // 0 (없으면 기본값)

⚠️ 주의Map에서 없는 키를 get하면 null이 반환됩니다. 기본값이 필요하면 getOrDefault를 사용해 NullPointerException을 피하세요.

순회하기

향상된 for문으로 컬렉션을 순회합니다. MapentrySet()으로 키와 값을 함께 꺼냅니다.

for (String name : names) {
    System.out.println(name);
}

for (Map.Entry<String, Integer> e : scores.entrySet()) {
    System.out.println(e.getKey() + ": " + e.getValue());
}

자주 쓰는 메서드

메서드설명
add(e) / put(k,v)요소 추가
get(i) / get(k)요소 조회
remove(e)요소 삭제
size()개수
contains(e)포함 여부
isEmpty()비었는지

요약

  • List는 순서 있고 중복 허용, ArrayList가 대표 구현체입니다.
  • Set은 중복을 허용하지 않습니다.
  • Map은 키-값 쌍을 저장하고 키로 값을 찾습니다.
  • 제네릭 <>으로 담을 타입을 지정해 안전성을 높입니다.
  • 없는 키 조회 시 getOrDefault로 null을 피할 수 있습니다.

연습문제

  1. List<Integer>에 1~5를 넣고 합계를 구하세요.
  2. Set을 사용해 중복된 단어를 제거하세요.
  3. Map<String, Integer>로 이름별 점수를 저장하고 특정 이름의 점수를 조회하세요.
  4. Map을 순회하며 모든 키와 값을 출력하세요.

힌트 — 합계는 향상된 for문으로 누적합니다.

💡 연습문제 풀이

불러오는 중…

함께 보면 좋은 자료

댓글 0

Java” 강좌에 대한 댓글입니다.

댓글을 작성하려면 로그인이 필요합니다.