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

  1. 01 - O Collections Framework — hierarquia Iterable/Collection/List/Set/Queue/Map, imutáveis vs views.
  2. 02 - Listas, conjuntos e filas — ArrayList/LinkedList, HashSet/TreeSet, ArrayDeque/PriorityQueue, Big-O.
  3. 03 - Mapas — HashMap por dentro, contrato hashCode/equals, TreeMap, API rica.
  4. 04 - Lambdas e interfaces funcionais — SAM, Function/Predicate/Consumer/Supplier, method references.
  5. 05 - Introdução à Stream API — pipeline lazy/eager, stream vs collection, consumível uma vez.

Adepto

  1. 06 - Comparable e Comparator — ordem natural vs externa, combinadores.
  2. 07 - Operações de Stream — intermediárias e terminais — map/filter/flatMap/reduce/find/match.
  3. 08 - Collectors e agrupamento — toMap/groupingBy/partitioningBy, downstream collectors.
  4. 09 - Streams primitivos — IntStream/LongStream, summary statistics, boxing.
  5. 10 - Optional — ausência no tipo, map/orElse, anti-patterns.
  6. 11 - java.time — Date e Time API — LocalDate/Instant, Duration/Period, imutabilidade.
  7. 12 - I-O moderno com java.nio.file — Path/Files, try-with-resources, streaming.

Magus

  1. 13 - Composição funcional e funções de alta ordem — compose/andThen, HOFs, quando funcional ajuda.
  2. 14 - SequencedCollection e SequencedMap — Java 21, acesso uniforme às pontas, reversed.
  3. 15 - Collectors customizados e Gatherers — Collector.of, Stream Gatherers (Java 24).
  4. 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 ASC

Veja também