Question: JAVA Define a class LinkedSet that represents a set and implements the interface given in Listing 1-5 of Chapter 1. Use the class LinkedBag in

JAVA

Define a class LinkedSet that represents a set and implements the interface given in Listing 1-5 of Chapter 1. Use the class LinkedBag in your implementation. Then write a program that adequately demonstrates your implementation.

Requirements:

You will develop the following: a. Develop the class LinkedSet which implements the SetInterface of Chapter 1. Use the LinkedBag.java file in your implementation

b. Develop a test class which will exercise and test the LinkedSet class. In the test application, create a list of 10 or 12 elements. Remove several elements. Print the list before and after the removal to demonstrate the proper functioning of your methods.

Listing 1-5 of Chapter 1:

/** An interface that describes the operations of a set of objects. */

public interface SetInterface

{

public int getCurrentSize();

public boolean isEmpty();

/** Adds a new entry to this set, avoiding duplicates.

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

@return True if the addition is successful, or

false if the item already is in the set. */

public boolean add(T newEntry);

/** Removes a specific entry from this set, if possible.

@param anEntry The entry to be removed.

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

public boolean remove(T anEntry);

public T remove();

public void clear();

public boolean contains(T anEntry);

public T[] toArray();

}

// end SetInterface

public final class LinkedBag1 implements BagInterface

{

private Node firstNode; // Reference to first node

private int numberOfEntries;

public LinkedBag1()

{

firstNode = null;

numberOfEntries = 0;

} // end default constructor

/** Adds a new entry to this bag.

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

@return True. */

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 of chain

// (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;

// Note: The body of this method could consist of one return statement,

// if you call Arrays.copyOf

} // end toArray

/** Sees whether this bag is empty.

@return True if the 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 the bag. */

public int getCurrentSize()

{

return numberOfEntries;

} // end getCurrentSize

// STUBS:

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

@return Either the removed entry, if the removal

was successful, or null. */

public T remove()

{

return null; // STUB

} // end remove

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

@param anEntry The entry to be removed.

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

public boolean remove(T anEntry)

{

return false; // STUB

} // end remove

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

public void clear()

{

// STUB

} // end clear

/** 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 the bag. */

public int getFrequencyOf(T anEntry)

{

return 0; // STUB

} // 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)

{

return false; // STUB

} // end contains

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 LinkedBag1

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!