Question

please use Java!!We are storing the inventory for our fruit stand in a hash table. The attached file shows all the possible key/fruit combinat4) delete(key) The delete method removes the specified element (the element corresponding to the input key) from the hash tabgone. A simple message item not found” is fine. You do not need to rehash after deleting 3 items. Other requirements I. As m[0,, 0] [0,, 0] [4017, apple granny smith, 0] [0,, 0] [0,, 0] The hash table should grow and rehash all elements afterkey fruit 4514 alfalfa sprouts 4131 apple fuji 4133 apple gala 4017 apple granny smith 4218 apricots 4525 asparagus 4225 avoc

0 0
Add a comment Improve this question Transcribed image text
Answer #1

class Fruit{
    private String fruitName;
    private int key;
    private boolean isDeleted;
  
    public Fruit(){
      
    }
  
    public Fruit(String name, int k, boolean isDel){
        fruitName = name;
        isDeleted = isDel;
        key = k;
    }
  
    public String getFruitName(){
        return fruitName;
    }
    public int getKey(){
        return key;
    }
    public boolean isDeleted(){
        return isDeleted;
    }
    public void setFruitName(String name){
        fruitName = name;
    }
    public void setKey(int k){
        key = k;
    }
    public void setDeleted(boolean b){
        isDeleted = b;
    }
}

class fruitHash{
    private Fruit[] fruitTable;
    private int tableSize;
  
    public fruitHash(int size){
        fruitTable = new Fruit[size];
        tableSize = size;
        for(int i = 0; i < tableSize; i++)
            fruitTable[i] = null;
    }
  
    public int size(){
        return tableSize;
    }
  
    public void insert(int key, String data){
        int k = hashFunction(key);
        if(fruitTable[k] != null){
            int k2 = doubleHash(key);
            if(fruitTable[k2] != null){
                int k3 = linearHash(key);
                if(k3 == -1){
                    System.out.println("Error: Table is full, cannot insert '"+data+"'");
                    return;
                }
                fruitTable[k3] = new Fruit(data, key, false);
            }else{
                fruitTable[k2] = new Fruit(data, key, false);
            }
        }else{
            fruitTable[k] = new Fruit(data, key, false);
        }
    }
  
  
    String find(int key){
        int k = hashFunction(key);
        if(fruitTable[k] == null){
            int k2 = doubleHash(key);
            if(fruitTable[k2] == null){
                int k3 = linearHash(key);
                if(k3 == -1){
                    return null;
                }
                if(fruitTable[k3].isDeleted())
                    return null;
                if (fruitTable[k3].getKey() == key) {
                    return fruitTable[k3].getFruitName();
                }
                return null;
            }else{
                if(fruitTable[k2].isDeleted())
                    return null;
                if (fruitTable[k2].getKey() == key) {
                    return fruitTable[k2].getFruitName();
                }
                return null;
            }
        }else{
            if(fruitTable[k].isDeleted())
                return null;
            if (fruitTable[k].getKey() == key) {
                return fruitTable[k].getFruitName();
            }
            return null;
        }
    }
  
    public void rehash(){
        tableSize *= 2;
        Fruit[] newtable = new Fruit[tableSize];
        for(int i = 0; i < tableSize; i++)
            newtable[i] = null;
        for(int i = 0; i < tableSize/2; i++){
            if(fruitTable[i] != null && !fruitTable[i].isDeleted()){
                int key = fruitTable[i].getKey();
                int k = hashFunction(key);
                if (newtable[k] != null) {
                    int k2 = doubleHash(key);
                    if (newtable[k2] != null) {
                        int k3 = linearHash(key);
                        if (k3 == -1) {
                            System.out.println("Error: Table is full!");
                            return;
                        }
                        newtable[k3] = new Fruit(fruitTable[i].getFruitName(), key, false);
                    } else {
                        newtable[k2] = new Fruit(fruitTable[i].getFruitName(), key, false);
                    }
                } else {
                    newtable[k] = new Fruit(fruitTable[i].getFruitName(), key, false);
                }
            }
        }
        fruitTable = newtable;
    }
  
    public void printTable(){
        System.out.println("FruitTable:");
        for(int i = 0; i < tableSize; i++){
            if(fruitTable[i] != null && !fruitTable[i].isDeleted()){
                System.out.println(" key: " + fruitTable[i].getKey() + ", value: " + fruitTable[i].getFruitName());
            }
        }
    }
  
    public void delete(int key){
        int k = hashFunction(key);
        if(fruitTable[k] == null){
            int k2 = doubleHash(key);
            if(fruitTable[k2] == null){
                int k3 = linearHash(key);
                if(k3 > 0){
                    fruitTable[k3].setDeleted(true);
                }
            }else{
                fruitTable[k2].setDeleted(true);
            }
        }else{
            fruitTable[k].setDeleted(true);
        }
    }
  
    private int hashFunction(int key){
        return key % tableSize;
    }
    private int linearHash(int key){
        int k = key % tableSize;
        int index = k;
        while(index < tableSize){
            if(fruitTable[index] == null)
                return index;
            if(fruitTable[index] != null && fruitTable[index].isDeleted())
                return index;
            index++;
        }
        index = 0;
        while(index < k){
            if(fruitTable[index] == null)
                return index;
            if(fruitTable[index] != null && fruitTable[index].isDeleted())
                return index;
            index++;
        }
        return -1;
    }
    private int doubleHash(int key){
        int k = key % tableSize;
        int k2 = 7 - (key % 7);
        int k2temp = k2, index = k;
        while(k2temp > 0){
            index++;
            if(index >= tableSize)
                index = 0;
            k2temp--;
        }
        return index;
    }
}

public class FruitTable {

    public static void main(String[] args) {
        fruitHash fhash = new fruitHash(10);
        System.out.println("Table size: "+fhash.size());
        fhash.insert(4514, "alfafa sprouts");
        fhash.insert(4131, "apple fuji");
        fhash.insert(4133, "apple gala");
        fhash.insert(4017, "apple granny smith");
        fhash.insert(4218, "apricots");
        fhash.insert(4525, "asparagus");
        fhash.insert(4225, "avocado large hass");
        fhash.insert(4227, "avocado small");
        fhash.insert(4234, "banana leaf");
        fhash.insert(4011, "banana");
        fhash.insert(4232, "banana baby");
        fhash.insert(4229, "banana burro");
        fhash.insert(4235, "banana macho");
        fhash.insert(4885, "basil");
        fhash.insert(4536, "bean sprouts");
        fhash.insert(3176, "beans black");
        fhash.insert(3196, "beans back eye");
        fhash.insert(3174, "beans garbanzo");
        fhash.insert(4066, "beans green");
        fhash.insert(3175, "beans haba dry");
        fhash.printTable();
        System.out.println("Find 4131: "+fhash.find(4131));
        System.out.println("Find 4011: "+fhash.find(4011));
        System.out.println("Find 4525: "+fhash.find(4525));
    }
  
}

Output - Fruit Table (run) x run: Table size: 10 Error: Table is full, cannot insert banana baby Error: Table is full, cann

Add a comment
Know the answer?
Add Answer to:
please use Java!! We are storing the inventory for our fruit stand in a hash table....
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT