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
--------------------------
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.