Skip to content

Guia completo de estruturas de dados em Java com trade-offs, complexidade Big O e 50+ exemplos práticos. Inclui ArrayList, HashMap, TreeSet, PriorityQueue e mais. Perfeito para estudantes, devs e entrevistas técnicas.

License

JPLabussiereF/java-data-structures-guide

Repository files navigation

📚 Guia Completo de Estruturas de Dados em Java

Java Markdown License

Um guia abrangente sobre estruturas de dados em Java, com análise detalhada de trade-offs, complexidades e exemplos práticos.

🚀 Início Rápido📖 Documentação🎯 Exemplos🤝 Contribuir


🌟 Destaques

  • 21 documentos completos cobrindo todas as estruturas principais
  • 📊 Análise de complexidade (Big O) para cada operação
  • ⚖️ Trade-offs detalhados com prós e contras
  • 💻 50+ exemplos práticos comentados
  • 🎯 Guias de decisão interativos
  • 🔬 Comparações lado a lado de estruturas similares

🚀 Início Rápido

Para Iniciantes

  1. Leia a Referência Rápida - Decisão em 30 segundos
  2. Use o Checklist - Perguntas para te guiar
  3. Consulte os exemplos - Código prático e funcional

Para Desenvolvedores Experientes

📖 Documentação Completa

🗂️ Estruturas de Lista

Estrutura Acesso Inserção Uso Principal Documentação
Array / ArrayList O(1) O(1)* Lista geral 📄 Docs
LinkedList O(n) O(1)† Inserções nas pontas 📄 Docs

*Amortizado no final | †Nas pontas

🎯 Estruturas de Conjunto

Estrutura Operações Ordenado Documentação
HashSet O(1) 📄 Docs
LinkedHashSet O(1) Inserção 📄 Docs
TreeSet O(log n) 📄 Docs

🗃️ Estruturas de Mapa

Estrutura Operações Ordenado Thread-Safe Documentação
HashMap O(1) 📄 Docs
LinkedHashMap O(1) Inserção 📄 Docs
TreeMap O(log n) 📄 Docs
ConcurrentHashMap O(1) 📄 Docs

📥 Estruturas de Fila/Pilha

Estrutura Tipo Operações Documentação
ArrayDeque Fila/Pilha O(1) 📄 Docs
PriorityQueue Heap O(log n) 📄 Docs
Stack Pilha (⚠️ legado) O(1) 📄 Docs

🎯 Exemplos

Exemplo: Eliminando Duplicatas

// Mantendo ordem original
List<Integer> original = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5);
List<Integer> semDuplicatas = new ArrayList<>(new LinkedHashSet<>(original));
// Resultado: [3, 1, 4, 5, 9, 2, 6]

Exemplo: Cache LRU

class LRUCache<K, V> extends LinkedHashMap<K, V> {
    private final int capacity;

    LRUCache(int capacity) {
        super(capacity, 0.75f, true); // access-order
        this.capacity = capacity;
    }

    @Override
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
        return size() > capacity;
    }
}

Exemplo: Top K Elementos

PriorityQueue<Integer> heap = new PriorityQueue<>();
for (int num : array) {
    heap.offer(num);
    if (heap.size() > k) heap.poll();
}
// heap contém os K maiores elementos

Ver mais exemplos →

🗺️ Guia de Decisão Rápida

Preciso de uma LISTA?
├─ Acesso por índice frequente? → ArrayList ⭐
├─ Inserções no início frequentes? → ArrayDeque
└─ Uso geral? → ArrayList (padrão seguro)

Preciso de CHAVE → VALOR?
├─ Multi-thread? → ConcurrentHashMap
├─ Ordenado? → TreeMap
├─ Ordem de inserção? → LinkedHashMap
└─ Uso geral? → HashMap ⭐ (padrão seguro)

Preciso ELIMINAR DUPLICATAS?
├─ Sem ordem? → HashSet ⭐ (mais rápido)
├─ Manter ordem? → LinkedHashSet
└─ Ordenado? → TreeSet

Preciso de FILA/PILHA?
├─ Pilha (LIFO)? → ArrayDeque ⭐
├─ Fila (FIFO)? → ArrayDeque ⭐
└─ Por prioridade? → PriorityQueue

📚 Índice Completo

📘 Guias de Referência

📗 Guias Detalhados

📕 Documentação de Estruturas

Listas:

Sets:

Maps:

Queues & Stacks:

🎓 Regras de Ouro

  1. 🥇 Na dúvida, use ArrayList (para listas)
  2. 🥇 Na dúvida, use HashMap (para mapas)
  3. ArrayDeque > LinkedList (para pilhas e filas)
  4. HashSet > TreeSet (se não precisa de ordem)
  5. ⚠️ NUNCA use: Stack, Hashtable, Vector (legados)

🤝 Contribuindo

Contribuições são bem-vindas! Sinta-se livre para:

  • 🐛 Reportar bugs ou erros
  • 💡 Sugerir novos exemplos
  • 📝 Melhorar a documentação
  • ⭐ Dar uma estrela se achou útil!

📄 Licença

Este projeto está sob a licença MIT. Livre para uso educacional e comercial.

📊 Estatísticas

  • 21 documentos markdown
  • 4400+ linhas de documentação
  • 50+ exemplos práticos
  • Cobertura de 17 estruturas de dados

Feito com 💜 para a comunidade Java

⬆ Voltar ao topo

About

Guia completo de estruturas de dados em Java com trade-offs, complexidade Big O e 50+ exemplos práticos. Inclui ArrayList, HashMap, TreeSet, PriorityQueue e mais. Perfeito para estudantes, devs e entrevistas técnicas.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages