Data-Structures-In-Java icon indicating copy to clipboard operation
Data-Structures-In-Java copied to clipboard

Data Structures implemented in Java

Data-Structures-in-Java

This repository contains various data structures and provide insights about them. Feel free to create an issue if you see one in any of the implementations.

Data Structures :
These is just a basic set, we have lot of other data structures as well,

  • Linear

    • Index Based
      • Arrays
    • Non Index Based
      • List
      • Queue
      • Stack
  • Non Linear

    • Hash Tables
    • Set
    • Priority Queue
    • Tree
      • Balanced
        • Red Black Tree
        • AVL Tree
        • Splay Tree
      • Non Balanced
        • Binary Tree
        • Binary Search Tree
        • B Tree
        • Trie
  • [X] Choosing the right data structure

Below topics/problems are covered as of now.

1. Strings

  • [X] String Introduction
  • [X] StringBuilder Implementation

2. Arrays

  • [X] Arrays Introduction
  • [X] Basic operations on Arrays
  • [X] Associative Array
  • [X] Sparse Array
  • [X] Pair
  • [X] Tuple
  • [X] ArrayList Implementation

3. LinkedList

  • [X] Linked List Introduction
  • [X] Singly LinkedList Implementation
  • [X] Doubly LinkedList Implementation
  • [X] Circular LinkedList Implementation

4. Stack

  • [X] Stack Introduction
  • [X] Simple stack from list
  • [X] Array based Implementation
  • [X] LinkedList based Implementation
  • [X] Queue based Implementation

5. Queue

  • [X] Queue Introduction
  • [X] Array based Implementation
  • [X] LinkedList based Implementation
  • [X] Stack based Implementation

6. Vector

  • [X] Vector Introduction
  • [X] Vector Implementation

7. Matrix

  • [ ] Matrix Introduction
  • [ ] Sparse Matrix

8. Trees

  • [X] Introduction
  • [X] Binary Tree
  • [X] Binary Search Tree
  • [X] AVL Tree
  • [ ] Splay Tree
  • [ ] B Tree
  • [ ] B+ Tree
  • [ ] Segment Tree
  • [ ] Red Black Tree
  • [ ] K Dimensional Tree
  • [ ] Suffix Tree
  • [ ] A B Tree

9. Graphs

  • [X] Introduction
  • [ ] How graphs are represented in memory
  • [X] Graph Implementation
  • [ ] MultiGraph Implementation
  • [X] BFS for Graphs
  • [X] DFS for Graphs

10. Heap

  • [ ] Introduction
  • [ ] Binary Heap
    • [ ] Min Heap
    • [ ] Max Heap
  • [ ] Binomial Heap
  • [ ] Fibonacci Heap
  • [ ] Weak Heap

11. Hashing

  • [X] Introduction
  • [X] Iterator v/s Enumeration
  • [X] HashTable v/s HashMap
  • [X] HashCode and Equals Contract
  • [ ] Bloom Filter
  • [ ] Lookup Table
  • [ ] Collision Handling
    • [ ] Separate Chaining
    • [ ] Linear Probing
    • [ ] Double Hashing
  • [X] HashMap Implementation
  • [X] ConcurrentHashMap Introduction
  • [X] ConcurrentHashMap Implementation
  • [X] ConcurrentModification Exception
  • [X] WeakHashMap Implementation
  • [X] HashTable Implementation
  • [ ] Distributed HashTable
  • [ ] HashSet Implementation
  • [ ] HashList Implementation
  • [ ] Dictionary Implementation
  • [ ] MultiMap

12. Set

  • [X] Introduction
  • [X] Set Implementation
  • [ ] MultiSet

13. Priority Queue

  • [ ] Introduction
  • [ ] Array based Implementation
  • [ ] Stack based Implementation
  • [X] Dequeue Implementation
  • [ ] Skip List

14. Trie

  • [X] Introduction
  • [X] Trie Implementation

15. Treap

  • [ ] Introduction
  • [ ] Treap Implementation

16. Cache

  • [X] Introduction
  • [X] LRU Cache
  • [X] MRU Cache

17. Miscellaneous

  • [ ] Bag
    • [X] Linked List Based
    • [ ] Binary Search Tree Based

18. Common Utils

  • [X] StringUtils
  • [X] NumberUtils
  • [X] ArrayUtils
  • [X] BooleanUtils
  • [X] CollectionUtils
  • [X] MapUtils

19. Iterators

  • [X] Standard Iterator
  • [ ] Deep Iterator
  • [ ] Filtering Iterator
  • [X] Hopping Iterator
  • [ ] InOrder Iterator
  • [X] LevelOrder Iterator
  • [X] MaxIterator Iterator
  • [ ] MultiIterator Iterator
  • [ ] Peek Iterator
  • [ ] PreOrder Iterator
  • [ ] Rotating Iterator