+1 (315) 557-6473 

Create a Program to Implement Recipe Manager in Python Assignment Solution.


Instructions

Objective
Write a python assignment program to implement recipe manager.

Requirements and Specifications

program to implement recipe manager in python
program to implement recipe manager in python 1

Source Code

import python.util.HashSet;

import python.util.Set;

public class MyHashMap {

// Holds an array of linked list of hash nodes

private Object[] nodes = new Object[8];

// Remove all elements

public void clear() {

for (int i = 0; i < nodes.length; i++) {

nodes[i] = null;

}

}

// Check if key exists

public boolean containsKey(K key) {

int index = hash(key);

if (nodes[index] == null) {

return false;

}

HashNode currentNode = (HashNode) nodes[index];

while (currentNode != null) {

if (currentNode.getKey().equals(key)) {

return true;

}

currentNode = currentNode.getNext();

}

return false;

}

// Check if value exists

public boolean containsValue(V value) {

for (Object object : nodes) {

if (object != null) {

HashNode currentNode = (HashNode) object;

while (currentNode != null) {

if (currentNode.getValue().equals(value)) {

return true;

}

currentNode = currentNode.getNext();

}

}

}

return false;

}

// Get the value associated with the key

public V get(K key) {

int index = hash(key);

if (nodes[index] == null) {

return null;

}

HashNode currentNode = (HashNode) nodes[index];

while (currentNode != null) {

if (currentNode.getKey().equals(key)) {

return currentNode.getValue();

}

currentNode = currentNode.getNext();

}

return null;

}

// Check if empty

public boolean isEmpty() {

for (Object object : nodes) {

if (object != null) {

return false;

}

}

return true;

}

// Return the set of keys

public Set keySet() {

Set set = new HashSet<>();

for (Object object : nodes) {

if (object != null) {

HashNode currentNode = (HashNode) object;

while (currentNode != null) {

set.add(currentNode.getKey());

currentNode = currentNode.getNext();

}

}

}

return set;

}

// Add or update a new pair

public void put(K key, V value) {

int index = hash(key);

// No collisions for fresh slot

if (nodes[index] == null) {

nodes[index] = new HashNode<>(key, value);

return;

}

// Search if the key already exists

HashNode currentNode = (HashNode) nodes[index];

while (currentNode != null) {

if (currentNode.getKey().equals(key)) {

// Do update ofkey already exists

currentNode.setValue(value);

return;

}

currentNode = currentNode.getNext();

}

// Do add in front

HashNode node = new HashNode<>(key, value);

node.setNext((HashNode) nodes[index]);

nodes[index] = node;

}

// Remove the key and returnthe associated value

public V remove(K key) {

int index = hash(key);

if (nodes[index] == null) {

return null;

}

HashNode previousNode = null;

HashNode currentNode = (HashNode) nodes[index];

while (currentNode != null) {

if (currentNode.getKey().equals(key)) {

if (currentNode == nodes[index]) {

// Case deleting the head

nodes[index] = ((HashNode) nodes[index]).getNext();

} else {

// Case deleting in-between

previousNode.setNext(currentNode.getNext());

}

return currentNode.getValue();

}

previousNode = currentNode;

currentNode = currentNode.getNext();

}

return null;

}

// Return the numberof elements

public int size() {

int overallSize = 0;

for (int i = 0; i < nodes.length; i++) {

overallSize += listSize(i);

}

return overallSize;

}

// Print out the table

public void printTable() {

int conflicts = 0;

for (int i = 0; i < nodes.length; i++) {

conflicts += printList(i);

}

System.out.println("Total # of conflicts: " + conflicts);

}

// Print the list content

private int printList(int index) {

System.out.print("Index " + index + ": ");

int totalConflicts = 0;

if (nodes[index] == null) {

System.out.println(" (0 conflicts), []");

} else {

int conflicts = listSize(index) - 1;

totalConflicts += conflicts;

System.out.print(" (" + conflicts + " conflicts), [");

HashNode currentNode = (HashNode) nodes[index];

while (currentNode != null) {

System.out.print(currentNode.getKey() + ", ");

currentNode = currentNode.getNext();

}

System.out.println("]");

}

return totalConflicts;

}

// Return how many elements are in the linked list

private int listSize(int index) {

if (nodes[index] == null) {

return 0;

}

int count = 0;

HashNode currentNode = (HashNode) nodes[index];

while (currentNode != null) {

count++;

currentNode = currentNode.getNext();

}

return count;

}

// Hash the key

private int hash(K key) {

int hashCode = key.hashCode();

int index = hashCode % nodes.length;

return Math.abs(index);

}

}