| Strings |
String += "..." |
Concatenação simples |
Baixa |
Evite dentro de loops — gera muitos objetos inúteis na heap. |
StringBuilder.append() |
Concatenação em loops |
Alta |
Padrão ouro para manipulação de strings pesada. Thread-unsafe. |
StringBuffer.append() |
Concatenação thread-safe |
Média |
Use quando múltiplas threads acessam o mesmo buffer. |
String.format() |
Formatação com templates |
Média |
Legível, mas mais lento que StringBuilder. Evite em hot paths. |
| Listas |
ArrayList.get(index) |
Acesso aleatório a listas |
O(1) |
Ideal quando você conhece a posição do item. |
LinkedList.get(index) |
Acesso aleatório a listas |
O(n) |
Lento. Use apenas se precisar de muitas inserções no início/fim. |
| Mapas e Conjuntos |
HashMap.get(key) |
Busca por chave |
O(1) médio |
Melhor opção para lookups frequentes. Evite colisões com bom hashCode(). |
TreeMap.get(key) |
Busca ordenada por chave |
O(log n) |
Use quando precisar de chaves em ordem natural ou customizada. |
HashSet.contains() |
Verificação de existência |
O(1) médio |
Muito mais rápido que List.contains() para grandes volumes. |
| Ordenação |
Collections.sort() |
Ordenação de listas |
O(n log n) |
Usa TimSort internamente. Estável e eficiente para a maioria dos casos. |
Arrays.sort() |
Ordenação de arrays primitivos |
O(n log n) |
Usa Dual-Pivot Quicksort. Mais rápido que Collections.sort() para primitivos. |
| Streams |
Stream.filter().map() |
Processamento funcional |
Variável |
Código legível, mas overhead maior que loops simples. Ideal para dados médios. |
Parallel Stream |
Processamento de Big Data |
Variável |
Use apenas para volumes massivos. Overhead de threading pode prejudicar listas pequenas. |
| Boas Práticas |
Optional.orElse() |
Tratamento de nulos |
Baixo custo |
Prefira a verificações null explícitas. Melhora legibilidade sem perda significativa. |
try-with-resources |
Gestão de recursos (I/O) |
Alta |
Sempre use para fechar streams, conexões e arquivos. Evita memory leaks. |
instanceof + cast |
Verificação de tipo em runtime |
Média |
Prefira polimorfismo. Com Java 16+, use pattern matching: if (obj instanceof String s). |