Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

java data structure Create six String bags in a main program, along with an arra

ID: 3750069 • Letter: J

Question

java data structure

Create six String bags in a main program, along with an array containing these strings:

computer

keyboard

mouse

myth

screen

hospital

controller

The strings with no vowels place in noneBag.

The strings that have 1 vowel place in the firstBag.

The strings that have 2 vowels place in the secondBag.

The strings that have 3 vowels place in the thirdBag.

The strings that have 4 vowels place in the fourthBag.

The strings that have 5 vowels place in the fifthBag.

Use a contain method to help identify which have vowels (a, e, i, o, u).

Display finally what’s in each bag.

(this is interface)

public interface BagInterface<T>

{

public int getCurrentSize();

public boolean isEmpty();

public boolean add(T newEntry);

public T remove();

public boolean remove(T anEntry);

public void clear();

public int getFrequencyOf(T anEntry);

public boolean contains(T anEntry);

public void display();

}

(this is implementation of interface)

public final class LinkedBag<T> implements BagInterface<T>

{

private Node firstNode;       // Reference to first node

private int numberOfEntries;

public LinkedBag()

{

firstNode = null;

numberOfEntries = 0;

} // end default constructor

/** Sees whether this bag is empty.

    @return True if this bag is empty, or false if not. */

public boolean isEmpty()

{

return numberOfEntries == 0;

} // end isEmpty

/** Gets the number of entries currently in this bag.

    @return The integer number of entries currently in this

bag. */

public int getCurrentSize()

{

return numberOfEntries;

} // end getCurrentSize

/** Adds a new entry to this bag.

    @param newEntry The object to be added as a new entry

    @return True if the addition is successful, or false if

not. */

public boolean add(T newEntry)          // OutOfMemoryError possible

{

// Add to beginning of chain:

Node newNode = new Node(newEntry);

newNode.next = firstNode; // Make new node reference rest

// (firstNode is null if chain is empty)

firstNode = newNode;      // New node is at beginning of chain

numberOfEntries++;

return true;

} // end add

/** Retrieves all entries that are in this bag.

    @return A newly allocated array of all the entries in

this bag. */

public T[] toArray()

{

// The cast is safe because the new array contains null entries

@SuppressWarnings("unchecked")

T[] result = (T[])new Object[numberOfEntries]; // Unchecked cast

int index = 0;

Node currentNode = firstNode;

while ((index < numberOfEntries) && (currentNode != null))

{

result[index] = currentNode.data;

index++;

currentNode = currentNode.next;

} // end while

return result;

} // end toArray

/** Counts the number of times a given entry appears in this bag.

@param anEntry The entry to be counted.

@return The number of times anEntry appears in this

bag. */

public int getFrequencyOf(T anEntry)

{

int frequency = 0;

int counter = 0;

Node currentNode = firstNode;

while ((counter < numberOfEntries) && (currentNode != null))

{

if (anEntry.equals(currentNode.data))

{

frequency++;

} // end if

counter++;

currentNode = currentNode.next;

} // end while

return frequency;

} // end getFrequencyOf

/** Tests whether this bag contains a given entry.

@param anEntry The entry to locate.

@return True if the bag contains anEntry, or false

otherwise. */

public boolean contains(T anEntry)

{

boolean found = false;

Node currentNode = firstNode;

while (!found && (currentNode != null))

{

if (anEntry.equals(currentNode.data))

found = true;

else

currentNode = currentNode.next;

} // end while

return found;

} // end contains

// Locates a given entry within this bag.

// Returns a reference to the node containing the entry, if located,

// or null otherwise.

private Node getReferenceTo(T anEntry)

{

boolean found = false;

Node currentNode = firstNode;

while (!found && (currentNode != null))

{

if (anEntry.equals(currentNode.data))

found = true;

else

currentNode = currentNode.next;

} // end while

return currentNode;

} // end getReferenceTo

/** Removes all entries from this bag. */

public void clear()

{

while (!isEmpty())

remove();

} // end clear

/** Removes one unspecified entry from this bag, if possible.

@return Either the removed entry, if the removal

was successful, or null. */

public T remove()

{

T result = null;

if (firstNode != null)

{

result = firstNode.data;

firstNode = firstNode.next; // Remove first node from chain

numberOfEntries--;

} // end if

return result;

} // end remove

/** Removes one occurrence of a given entry from this bag, if

possible.

@param anEntry The entry to be removed.

@return True if the removal was successful, or false otherwise. */

public boolean remove(T anEntry)

{

boolean result = false;

Node nodeN = getReferenceTo(anEntry);

if (nodeN != null)

{

nodeN.data = firstNode.data; // Replace located entry with entry

firstNode = firstNode.next; // Remove first node

numberOfEntries--;

result = true;

} // end if

return result;

} // end remove

public void display()

{

Node currentNode = firstNode;

while (currentNode != null)

{

System.out.println(currentNode.data);

currentNode = currentNode.next;

}

}

private class Node

{

private T    data; // Entry in bag

private Node next; // Link to next node

private Node(T dataPortion)

{

this(dataPortion, null);

} // end constructor

private Node(T dataPortion, Node nextNode)

{

data = dataPortion;

next = nextNode;

} // end constructor

} // end Node

} // end LinkedBag

(this is main class with already six bags)

public static void main(String[] args) {

   

BagInterface<String> noneBag = new LinkedBag<>();

BagInterface<String> firstBag = new LinkedBag<>();

BagInterface<String> secondBag = new LinkedBag<>();

BagInterface<String> thirdBag = new LinkedBag<>();

BagInterface<String> fourthBag = new LinkedBag<>();

BagInterface<String> fifthBag = new LinkedBag<>();

}

Explanation / Answer




Given below is the code for the question. Use it along with your BagInterface.java and LinkedBag.java
To indent code in eclipse , select code by pressing ctrl+a and then indent using ctrl+i
Please do rate the answer if it was helpful. Thank you
TestLinkedBag.java
----------------------

public class TestLinkedBag {

public static int countVowels(String s){

char[] vowels = {'a', 'e','i', 'o', 'u'};

int numVowels = 0;

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

char c = s.charAt(i);

for(int j = 0; j < vowels.length; j++){

if(c == vowels[j]){

numVowels++;

}

}

}

return numVowels;

}

public static void printBag(String msg, BagInterface<String> bag) {

System.out.println(msg);

bag.display();

System.out.println("-------------------------- ");

}

public static void main(String[] args) {

BagInterface<String> noneBag = new LinkedBag<String>();

BagInterface<String> firstBag = new LinkedBag<String>();

BagInterface<String> secondBag = new LinkedBag<String>();

BagInterface<String> thirdBag = new LinkedBag<String>();

BagInterface<String> fourthBag = new LinkedBag<String>();

BagInterface<String> fifthBag = new LinkedBag<String>();

String[] str = { "computer", "keyboard", "mouse", "myth", "screen", "hospital", "controller" };

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

int numVowels = countVowels(str[i]);

if (numVowels == 0)

noneBag.add(str[i]);

else if (numVowels == 1)

firstBag.add(str[i]);

else if (numVowels == 2)

secondBag.add(str[i]);

else if (numVowels == 3)

thirdBag.add(str[i]);

else if (numVowels == 4)

fourthBag.add(str[i]);

else if (numVowels == 5)

fifthBag.add(str[i]);

}

printBag("noneBag contains", noneBag);

printBag("firstBag contains", firstBag);

printBag("secondBag contains", secondBag);

printBag("thirdBag contains", thirdBag);

printBag("fourthBag contains", fourthBag);

printBag("fifthBag contains", fifthBag);

}

}

output
------

noneBag contains

myth

--------------------------

firstBag contains

--------------------------

secondBag contains

screen

--------------------------

thirdBag contains

controller

hospital

mouse

keyboard

computer

--------------------------

fourthBag contains

--------------------------

fifthBag contains

--------------------------