In class we implemented methods for removing and retrieving an arbitrary item fr
ID: 3790311 • Letter: I
Question
In class we implemented methods for removing and retrieving an arbitrary item from a bag. The methods returned either the last item (array) or the first item (linked structure). Sometimes returning a random item is more useful, as for word and card games. Other times, a user may want to remove a specific item (for instance, an ‘E’ letter tile or an Ace card). To give users these options, we will add three methods to our bag interface:
boolean remove (T item);
T removeRandom();
T getRandom();
Write code for these methods for both the ArrayBag and LinkedBag implementations. Then test them using the Bags driver program. Your output for the LinkedBag implementation should look like this (and for the ArrayBag implementation, the items will simply be reversed):
Here's what's in our bag
[lime, coconut, kiwi, grape, orange]
Does our bag contain the word 'kiwi'? yes
Does our bag contain the word 'mango'? no
Selecting an item (always same)
lime lime
Selecting a random item (varies)
coconut kiwi
Removing 'grape' from the bag
[coconut, kiwi, lime, orange]
Removing an item (always end one)
coconut [kiwi, lime, orange]
Removing a random item
lime [kiwi, orange]
Let's empty the bag
[]
Trying to get a random item
null
Trying to remove a random item
null
Explanation / Answer
BagOperation.java
package com.sweet.test;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
public class BagOperation {
public void showBagItemsArray(String[] itemsArray)
{
for(String item: itemsArray)
{
System.out.print(item+" ");
}
}
public void showBagItemsList(LinkedList<String> itemList)
{
for(String item: itemList)
{
System.out.print(item+" ");
}
}
public void checkItemInArray(String itemName,String[] itemArray)
{
for(String item: itemArray)
{
if(item.equalsIgnoreCase(itemName))
{
System.out.println("Yes");
return;
}
}
System.out.println("No");
}
public void checkItemInList(String itemName,LinkedList<String> itemArray)
{
for(String item: itemArray)
{
if(item.equalsIgnoreCase(itemName))
{
System.out.println("Yes");
return;
}
}
System.out.println("No");
}
public void selectItemInArray(String[] itemArray)
{
if(itemArray.length!=0)
{
System.out.println(itemArray[0]);
}
else
{
System.out.println("null");
}
}
public void selectItemInList(LinkedList<String> itemList)
{
if(!itemList.isEmpty())
{
System.out.println(itemList.getFirst());
}
else
{
System.out.println("null");
}
}
public void selectRandomItemInArray(String[] itemArray)
{
if(itemArray.length!=0)
{
int rnd = new Random().nextInt(itemArray.length);
System.out.println(itemArray[rnd]);
}
else
{
System.out.println("null");
}
}
public void selectRandomItemInList(LinkedList<String> itemList)
{
if(!itemList.isEmpty())
{
int rnd = new Random().nextInt(itemList.size());
System.out.println(itemList.get(rnd));
}
else
{
System.out.println("null");
}
}
public String[] removeItemInArray(String itemName,String[] itemArray)
{
List<String> listOfItems = Arrays.asList(itemArray);
for(int i = 0;i<listOfItems.size();i++)
{
if(listOfItems.get(i).equalsIgnoreCase(itemName))
{
listOfItems.remove(i);
break;
}
}
return itemArray = listOfItems.toArray(itemArray);
}
public LinkedList<String> removeItemInList(String itemName,LinkedList<String> itemList)
{
for(int i = 0;i<itemList.size();i++)
{
if(itemList.get(i).equalsIgnoreCase(itemName))
{
itemList.remove(i);
}
}
return itemList;
}
public String[] removeRandomItemInArray(String[] itemArray)
{
if(itemArray.length!=0)
{
List<String> listOfItems = Arrays.asList(itemArray);
int rnd = new Random().nextInt(listOfItems.size());
listOfItems.remove(rnd);
itemArray = listOfItems.toArray(itemArray);
}
return itemArray;
}
public LinkedList<String> removeRandomInList(LinkedList<String> itemList)
{
if(!itemList.isEmpty())
{
int rnd = new Random().nextInt(itemList.size());
itemList.remove(rnd);
}
return itemList;
}
public String[] removeEndItemInArray(String[] itemArray)
{
if(itemArray.length!=0)
{
itemArray = Arrays.copyOf(itemArray, itemArray.length-1);
}
return itemArray;
}
public LinkedList<String> removeEndInList(LinkedList<String> itemList)
{
if(!itemList.isEmpty())
{
itemList.remove(itemList.size()-1);
}
return itemList;
}
public String[] emptyArray(String[] itemArray)
{
return null;
}
public LinkedList<String> emptyList(List<String> itemList)
{
return null;
}
}
BagOperationTest.java
package com.sweet.test;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;
public class BagOperationTest
{
public static void main(String[] args) {
String[] bagArray = {"lime","coconut","kiwi","grape","orange"};
LinkedList<String> bagList = new LinkedList<String>(Arrays.asList(bagArray));
Scanner sc = new Scanner(System.in);
BagOperation bagOperation = new BagOperation();
while(true)
{
System.out.println("Select one option : 1) To view Bag Items in array 2) To view Bag Items in linked List"
+ " 3) To check Item In Array 4) To check Item In Linked List 5) To select item in Array "
+ " 6) To select item in Linked List 7) To select Random Item In Array 8) To select Random Item In Linked List "
+ " 9) To remove Item In Array 10) To remove Item In Linked List "
+ " 11) To remove random Item In Array 12) To remove random Item In Linked List "
+ " 13) To remove end Item In Array 14) To remove end Item In Linked List "
+ " 15) To Empty Array Bag 16) To Empty Liked List Bag 17) To Exit"
);
int ch = sc.nextInt();
switch(ch)
{
case 1:
{
bagOperation.showBagItemsArray(bagArray);
break;
}
case 2:
{
bagOperation.showBagItemsList(bagList);
break;
}
case 3:
{
System.out.println("Select item to Check");
String itemName = sc.next();
bagOperation.checkItemInArray(itemName, bagArray);
break;
}
case 4:
{
System.out.println("Select item to Check");
String itemName = sc.next();
bagOperation.checkItemInList(itemName, bagList);
break;
}
case 5:
{
bagOperation.selectItemInArray(bagArray);
break;
}
case 6:
{
bagOperation.selectItemInList(bagList);
break;
}
case 7:
{
bagOperation.selectRandomItemInArray(bagArray);
break;
}
case 8:
{
bagOperation.selectRandomItemInList(bagList);
break;
}
case 9:
{
System.out.println("Select item to remove");
String itemName = sc.next();
bagArray = bagOperation.removeItemInArray(itemName, bagArray);
break;
}
case 10:
{
System.out.println("Select item to remove");
String itemName = sc.next();
bagList = bagOperation.removeItemInList(itemName, bagList);
break;
}
case 11:
{
bagOperation.removeRandomItemInArray(bagArray);
break;
}
case 12:
{
bagList = bagOperation.removeRandomInList(bagList);
break;
}
case 13:
{
bagOperation.removeEndItemInArray(bagArray);
break;
}
case 14:
{
bagList = bagOperation.removeEndInList(bagList);
break;
}
case 15:
{
bagOperation.emptyArray(bagArray);
break;
}
case 16:
{
bagList = bagOperation.emptyList(bagList);
break;
}
case 17:
{
System.exit(0);
}
}
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.