CodeGym
프로모션
학습
강좌
과제
설문 & 퀴즈
게임
도움말
일정
커뮤니티
사용자
포럼
채팅
아티클
성공 사례
활동
후기
구독
라이트 테마

강의

  • 리뷰
  • 회사 소개
시작
학습 시작
Start learning now
  • 진행 상황
  • 코스
  • 퀘스트 맵
  • 레슨
  • groupingBy 및 partitioningBy 메서드 (Collectors)

    JAVA 25 SELF
    레벨 31,레슨 2
    이 강의에서는 컬렉터 Collectors.groupingBy와 Collectors.partitioningBy로 스트림에서 데이터를 그룹화하는 방법을 배웁니다: 단순 및 중첩 그룹화, 불리언 기준 분할, 둘 중 선택 기준, 결과 처리와 요령. 문자열, 숫자, 객체의 실전 예제를 통해 스트림( Stream API)에서 원하는 구조의 Map을 얻는 방법과 분류 함수( Function)와 프레디케이트( Predicate)를 다루는 방법을 확인합니다. 마지막에는 흔한 실수를 정리합니다.
    사용 가능
  • 고급 집계: 중첩 그룹화

    JAVA 25 SELF
    레벨 31,레슨 3
    Stream과 컬렉터를 활용한 중첩 그룹화 실전 가이드: Collectors.groupingBy를 집계기( maxBy, averagingInt, counting)와 결합하는 방법, mapping으로 데이터를 변환하는 방법, partitioningBy로 부분집합을 나누는 방법, 그리고 중첩된 Map 구조를 올바르게 읽는 법. 직관적인 예시 다수, 결과 구조 시각화, 그리고 흔한 실수에 대한 해설까지 포함합니다.
    사용 가능
  • 고급 컬렉터

    JAVA 25 SELF
    레벨 31,레슨 4
    이 강의에서는 Stream API 컬렉터의 고급 기법을 다룹니다: groupingBy/ partitioningBy를 위한 중첩 downstream 컬렉터, mapping을 통한 변환, filtering을 통한 필터링, flatMapping을 통한 “펼치기”, teeing(Java 12+)을 통한 동시 집계, 그리고 toUnmodifiableList/Set/Map 및 collectingAndThen으로 컬렉션을 “동결”하는 방법. 실용적인 파이프라인과 흔한 실수를 보여줍니다.
    사용 가능
  • flatMap와 mapMulti 메서드

    JAVA 25 SELF
    레벨 32,레슨 0
    이번 강의에서는 map을 통한 데이터 변환, “평탄화” 변환을 수행하는 flatMap, 그리고 Java 16+의 더 효율적인 대안인 mapMulti의 차이를 살펴봅니다. 실습 예제를 통해 중첩 컬렉션을 Stream<String> 대신 Stream<Stream<String>> 형태에서 어떻게 풀어 Stream<String>으로 만드는지, Optional을 stream()으로 다루는 방법, 그리고 중간 스트림을 만들지 않고 성능을 위해 언제 mapMulti를 선택할지 명확히 확인합니다.
    사용 가능
  • join, concat 메서드: 스트림 결합

    JAVA 25 SELF
    레벨 32,레슨 1
    이 강의에서는 Stream API에서 데이터를 결합하는 방법을 다룹니다: 두 스트림을 위한 정적 메서드 Stream.concat, 임의 개수의 스트림을 위한 Stream.of + flatMap 조합, 그리고 요소들을 하나의 문자열로 이어 붙이는 수집기 Collectors.joining. 지연 실행, 스트림의 1회성, 순서 보존, 그리고 전형적인 실수들(스트림 재사용, 무한 스트림, 문자열이 아닌 타입에 대한 joining)에 대해 시각적인 예제와 함께 설명합니다.
    사용 가능
  • union, intersection, difference 연산

    JAVA 25 SELF
    레벨 32,레슨 2
    이 강의에서는 Java에서의 집합 연산을 다룹니다: 합집합 ( union), 교집합 ( intersection) 그리고 차집합 ( difference)을 Set 인터페이스와 Stream API를 기반으로 설명합니다. Stream.concat, Stream.of + flatMap을 사용한 실전 예제, retainAll/ removeAll을 통한 대안, 그리고 equals/ hashCode, 성능, 흔한 실수와 같은 중요한 포인트를 함께 다룹니다.
    사용 가능
  • zip 결합 (zip), 스트림 생성 (iterate, generate)

    JAVA 25 SELF
    레벨 32,레슨 3
    이 강의에서는 zip이 무엇인지와 표준 Stream API(Java 22 이전)에는 왜 없는지 살펴보고, IntStream.range로 인덱스를 이용해 컬렉션을 “맞물려” 결합하는 방법, 그리고 Stream.iterate와 Stream.generate로 “즉석에서” 스트림을 생성하는 방법을 배웁니다. 예제, 시각화, 그리고 흔한 실수들을 통해 생성과 zip 결합을 자신 있게 과제에 적용할 수 있도록 합니다.
    사용 가능
  • 스트림 작업에서 흔한 오류 분석

    JAVA 25 SELF
    레벨 32,레슨 4
    Java의 Stream API를 사용할 때 자주 발생하는 오류에 대한 자세한 가이드: 스트림의 일회성 특성과 터미널 연산( collect(), forEach(), count())을 반복 호출하는 실수, 순회 중 컬렉션 변경, 무한 스트림( iterate, generate)에서 빠진 limit(), null 처리와 flatMap(Optional::stream)을 통한 Optional 다루기, forEachOrdered()로 순서 보장, Set을 활용한 효율적인 집합 연산, 자원 올바르게 닫기( Files.lines + try-with-resources), parallelStream() 사용 시 주의, 그리고 “터미널 연산이 호출되기 전까지는 아무 것도 실행되지 않는다” 원칙. 모든 문제는 이해하기 쉬운 예제와 수정 방법을 함께 제공합니다.
    사용 가능
  • 프리미티브 스트림과 박싱(boxing)의 비용

    JAVA 25 SELF
    레벨 33,레슨 0
    이 강의에서는 숫자 컬렉션의 일반 스트림( Stream<Integer>, Stream<Double>)이 박싱/언박싱(boxing/unboxing) 때문에 비효율적일 수 있는 이유와, 프리미티브 스트림 — IntStream, LongStream, DoubleStream — 이 이를 어떻게 피하게 해주는지 알아봅니다. 또한 mapToInt/ boxed() 변환, 집계 연산( sum(), average(), summaryStatistics()), OptionalInt/ OptionalDouble로 안전하게 결과를 다루는 방법, 실제로 최적화가 도움이 되는 지점과 JMH로 효과를 측정하는 방법을 살펴봅니다.
    사용 가능
  • Stream API의 지연 평가(lazy evaluation)

    JAVA 25 SELF
    레벨 33,레슨 1
    이 강의에서는 Stream API에서 지연 평가가 어떻게 동작하는지 살펴봅니다: 중간 연산과 종단 연산의 차이, 계산이 왜 종단 연산 호출 후에야 시작되는지, 요소 단위 처리와 “단락 평가”가 주는 이점. filter, map, peek, findFirst, forEach로 체인을 구성해 보고, 요소가 흐르는 과정을 시각화하며, 자주 하는 실수와 효율적인 연산 순서에 대한 권장 사항을 정리합니다.
    사용 가능
  • 불변 컬렉션: Collections.unmodifiable

    JAVA 25 SELF
    레벨 33,레슨 2
    이 강의에서는 불변 래퍼 Collections.unmodifiableList, unmodifiableSet, unmodifiableMap으로 데이터를 보호하는 방법, “얕은” 불변성과 “깊은” 불변성의 차이, 메서드에서 래퍼를 언제·왜 반환해야 하는지, 그리고 List.of/ Set.of/ Map.of 같은 최신 대안까지 다룹니다. 전형적인 실수(예: 깊은 불변성을 기대하거나 null을 다루는 경우)와, 왜 수정 시도가 UnsupportedOperationException으로 끝나는지도 이야기합니다.
    사용 가능
  • Spliterator와 병렬 스트림

    JAVA 25 SELF
    레벨 33,레슨 3
    이 강의에서는 Spliterator가 무엇인지, 요소를 순회할 뿐 아니라 trySplit()로 데이터 소스를 조각으로 나눌 수 있게 해 주는 방식, 이를 바탕으로 parallelStream()과 공용 풀 ForkJoinPool을 통해 병렬 스트림이 동작하는 원리를 다룹니다. 핵심 메서드( tryAdvance, estimateSize, characteristics), 대표적인 characteristic( ORDERED, SIZED, CONCURRENT 등), 실전 예제, Mermaid 다이어그램, 그리고 병렬 스트림 사용 시 자주 발생하는 오류를 함께 살펴봅니다.
    사용 가능
  • 1
  • ...
  • 14
  • 15
  • 16
  • 17
  • 18
  • ...
  • 30
학습
  • 등록
  • Java 과정
  • 과제 도움
  • 요금
  • Java 문법
커뮤니티
  • 사용자
  • 아티클
  • 포럼
  • 채팅
  • 성공 사례
  • 활동
  • 제휴 프로그램
회사
  • 회사 소개
  • 연락처
  • 후기
  • 보도자료실
  • CodeGym for EDU
  • FAQ
  • 지원
CodeGymCodeGym 은(는) 처음부터 Java 프로그래밍을 배우기 위한 온라인 코스입니다. 이 과정은 초보자가 Java를 마스터하기에 완벽한 방법입니다. 즉시 검증 기능이 포함된 1200개 이상의 과제와 Java 기초 이론의 필수 범위를 제공합니다. 학습 성공을 돕기 위해 퀴즈, 코딩 프로젝트, 효율적인 학습법 관련 콘텐츠, Java 개발자 경력 관련 자료 등 동기 부여 기능들을 구현했습니다.
팔로우하기
인터페이스 언어
English Deutsch Español हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語
한국어
Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
"Programmers Are Made, Not Born" © 2026 CodeGym
MastercardVisa
"Programmers Are Made, Not Born" © 2026 CodeGym