Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

JPLabussiereF/java-data-structures-guide

Open more actions menu

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

 
 
 

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.