# Requirements

## Java Collection framework

The Collection in Java is a framework that provides an architecture to store and manipulate the group of objects.

![flowchart](https://user-images.githubusercontent.com/71463658/101475597-9db6f400-3972-11eb-8b9f-dec58a00104f.png)

## Collection framework used in this project

### In Graph_M.java

*  ArrayList
* LinkedList
* Stack
* HashMap

### In Heap.java

* HashMap
* ArrayList



## Data Structures
Data structure is a way of organizing data in the computer so that it can be used effectively.
The data structures used in this project are:
* Array
* HashMap
* Linked List
* Heap
* Stack
* Graph

* The array data structure is implemented using ArrayList class which is a resizable array.It stores data in contiguous memory locations.
* Hashmap data structure is used to store key-value pairs.
* The stack data structure required by the algorithm is implemented using linked list.It follows the principle Last In First Out(LIFO)
* Heap is implemented with the help of ArrayList and HashMap.It is a tree based data structure where all elements of the tree are in a particular order.
* Graph is a complex data structure containing vertices and edges connecting these vertices.This is implemented in the project with the help of ArrayList and HashMap.
