Java 기초집LESSON 18
컬렉션 기초: ArrayList와 List로 기록 목록 관리하기
난이도입문 → 초급
예상 시간35분
선수지식이전 강의
18강. 컬렉션 기초: ArrayList와 List로 기록 목록 관리하기
1. 이번 강의에서 해결할 문제
기록 수를 미리 알 수 없는데 배열을 사용하면 크기 변경과 복사가 필요합니다. 추가·조회가 자연스러운 동적 목록이 필요합니다.
2. 학습 목표
3. 핵심 개념
List는 순서와 중복을 허용하는 컬렉션 계약이고 ArrayList는 배열 기반 구현입니다. 변수 타입을 List로 두면 호출 코드는 구현 세부보다 필요한 동작에 의존합니다. 원시 int는 컬렉션에서 Integer로 오토박싱됩니다.
4. 단계별 실습
1. src/ListRecords.java 작성
실행 환경: 코드 편집기
실행 위치: C:\dev\game-records
실행 전 확인: 같은 이름의 기존 파일이 있다면 덮어쓰기 전에 Git diff와 이번 강의 변경 범위를 확인합니다.
대상 파일: src/ListRecords.java
src/ListRecords.java
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
record GameRecord(String playerName, int score) {}
public class ListRecords {
public static void main(String[] args) {
List<GameRecord> records = new ArrayList<>();
records.add(new GameRecord("Alice", 1300));
records.add(new GameRecord("Bob", 900));
records.add(new GameRecord("Alice", 1450));
for (GameRecord record : records) System.out.println(record);
records.stream().max(Comparator.comparingInt(GameRecord::score))
.ifPresent(top -> System.out.println("최고: " + top));
System.out.println("기록 수: " + records.size());
}
}
2. PowerShell에서 컴파일·실행
실행 환경: Windows PowerShell
실행 위치: C:\dev\game-records
실행 전 확인: java -version과 javac -version이 선택한 LTS JDK를 가리키고, 소스 파일명이 public 클래스명과 일치하는지 확인합니다.
대상: 이 강의의 .java 파일, out의 class 파일과 명시된 출력 파일
Windows PowerShell
Set-Location C:\dev\game-records
javac -d out .\src\ListRecords.java
java -cp out ListRecords
예상 결과: 입력 순서대로 세 기록, 최고 점수 기록과 전체 개수가 출력됩니다.
5. 코드가 동작하는 이유
ArrayList는 추가 순서를 유지하고 같은 플레이어 기록도 중복 저장합니다. max는 빈 목록일 수 있어 Optional을 반환하며 ifPresent가 값이 있을 때만 출력합니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2컬렉션 기초: ArrayList와 List로 기록 목록 관리하기 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
18강. 컬렉션 기초: ArrayList와 List로 기록 목록 관리하기 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.