Collections, Streams e Programação Funcional
TL;DR
Galho 2 da trilha Java Senior; cobre Collections Framework, Stream API, programação funcional (lambdas/composição), Optional, Date/Time (java.time) e I/O moderno (java.nio.file).
Sobre este galho
Este galho cobre o ecossistema de dados e processamento funcional do Java: a hierarquia do Collections Framework com suas implementações e trade-offs, a Stream API com seu modelo lazy/eager, programação funcional com lambdas e interfaces funcionais, composição de funções de alta ordem, Optional como alternativa idiomática ao null, a API moderna de datas com java.time, e I/O de arquivos com java.nio.file. Não cobre concorrência, threads nem parallel streams — esses tópicos ficam no Galho 4.
Este galho é um refator do tronco [[Java Fundamentals]]: as seções de Collections e Streams foram extraídas do monolito original, aprofundadas e reorganizadas em notas atômicas por fase de aprendizado.
Audiência primária: dev senior em preparação para entrevista internacional. Cada nota expõe o “porquê” das escolhas de estrutura e as perguntas mais cobradas, com frases prontas em inglês. Audiência secundária: o mesmo dev em decisões de design do dia a dia — qual coleção escolher, quando usar stream vs loop, como modelar ausência com Optional.
Iniciado
- 01 - O Collections Framework — hierarquia Iterable/Collection/List/Set/Queue/Map, imutáveis vs views.
- 02 - Listas, conjuntos e filas — ArrayList/LinkedList, HashSet/TreeSet, ArrayDeque/PriorityQueue, Big-O.
- 03 - Mapas — HashMap por dentro, contrato hashCode/equals, TreeMap, API rica.
- 04 - Lambdas e interfaces funcionais — SAM, Function/Predicate/Consumer/Supplier, method references.
- 05 - Introdução à Stream API — pipeline lazy/eager, stream vs collection, consumível uma vez.
Adepto
- 06 - Comparable e Comparator — ordem natural vs externa, combinadores.
- 07 - Operações de Stream — intermediárias e terminais — map/filter/flatMap/reduce/find/match.
- 08 - Collectors e agrupamento — toMap/groupingBy/partitioningBy, downstream collectors.
- 09 - Streams primitivos — IntStream/LongStream, summary statistics, boxing.
- 10 - Optional — ausência no tipo, map/orElse, anti-patterns.
- 11 - java.time — Date e Time API — LocalDate/Instant, Duration/Period, imutabilidade.
- 12 - I-O moderno com java.nio.file — Path/Files, try-with-resources, streaming.
Magus
- 13 - Composição funcional e funções de alta ordem — compose/andThen, HOFs, quando funcional ajuda.
- 14 - SequencedCollection e SequencedMap — Java 21, acesso uniforme às pontas, reversed.
- 15 - Collectors customizados e Gatherers — Collector.of, Stream Gatherers (Java 24).
- 16 - Escolha de coleção e estilo funcional — síntese — capstone: decision tree, stream vs loop.
Rotas alternativas
Completa
01 → 02 → 03 → 04 → 05 → 06 → 07 → 08 → 09 → 10 → 11 → 12 → 13 → 14 → 15 → 16. Percurso linear do básico ao avançado.
Entrevista internacional
01 → 03 → 04 → 05 → 07 → 08 → 10 → 16. Collections fundamentais, lambdas, streams com collectors, Optional e síntese — o que mais cai.
Domine Streams
05 → 07 → 08 → 09 → 15. Pipeline básico, operações, agrupamento, primitivos e collectors avançados.
Escolha de estrutura de dados
01 → 02 → 03 → 06 → 16. Hierarquia, implementações principais, ordenação e decision tree final.
Programação funcional
04 → 13 → 10 → 07. Lambdas, composição de funções, Optional e operações de stream.
Todas as notas
TABLE fase, status, updated
FROM "03-Dominios/Java/Collections e Streams"
WHERE type = "concept"
SORT file.name ASCVeja também
- Java (MOC central)
- Linguagem e sintaxe moderna (Galho 1)
- Concorrência e paralelismo (Galho 4)
- Dicionário de Java
- Java Fundamentals (tronco em transição)
- JVM por dentro (Galho 3) — memória de runtime, GC, JIT e diagnóstico