Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

A set is an unordered data structure like a bag, but with the restriction that no duplicates are allowed. Implement the add() method for ArraySet

A set is an unordered data structure like a bag, but with the restriction that no duplicates are allowed. Implement the add() method for ArraySet and LinkedSet. The method should add the item to the set only if it is not already present. It should return true if the item was successfully added, false otherwise:

boolean add (T item); Test your method using the driver program Sets.java. The output should look like this:

Here's what's in our set [orange, grape, kiwi, coconut, lime]

Let's add a banana Was the operation successful? yes Our set looks like this [orange, grape, kiwi, coconut, lime, banana]

Let's try to add another orange Was the operation successful? no Our set looks like this [orange, grape, kiwi, coconut, lime, banana]

Trying to add null to our set null not a possible value!

Next write a program Seuss.java that reads in the text of Green Eggs and Ham (greenEggs.txt), adds the words to a set, and then outputs the contents to another file (words.txt). To ensure that each word is counted only once, you will want to eliminate punctuation and capitalization before adding it to the set. One way to do this is to use a helper method that copies just the letters to a new string:

public static String removePunc (String s) To determine whether a character is a letter, you could use a method like this:

public static boolean isLetter(char c) {

if (c >= A && ...) ...

} To convert a word to lowercase, you can use the string method toLowerCase().

Spring 2017 COMP 2000 Lab 3 Bolotin

The output file should contain the following 50 words (unalphabetized since we havent covered sorting yet):

i am sam that do not like you green eggs and ham them would here or there anywhere in a house with mouse eat box fox could car they are may will see tree let me be train on say the dark rain goat boat so try if good thank

If you want the words to be stored on separate lines (rather than enclosed in brackets, the way that toString() formats them), you could cycle through the set using a loop and write each one to the file:

i am sam that do not

You may also want to print the words on the. screen while you are working on the program.

Sets.java

/*

* interface for a set

*

* unordered collection, no duplicates allowed

*/

public interface Set

{

/*

* adds item to set if not already present

*

* returns true if item successfully added, false if not

*

*/

boolean add (T item);

T remove();

T get();

boolean contains (T item);

int size();

public String toString();

}

ArraySets.java

/*

* ArraySet

*

* array-based implementation of a set

*

* unordered collection with no duplicates allowed

*/

public class ArraySet implements Set

{

public static final int DEFAULT_CAPACITY = 10;

private T [] set;

private int size;

/*

* default constructor

*

* set initially set to 10 items

*/

public ArraySet()

{

this(DEFAULT_CAPACITY);

}

/*

* argument constructor

*

* size of set specified by user

*/

@SuppressWarnings("unchecked")

public ArraySet(int capacity)

{

if (capacity <= 0)

{

throw new IllegalArgumentException("size must be positive!");

}

set = (T []) new Object [capacity];

size = 0;

}

/*

* adds item to set if not already present

*

* returns true if item successfully added, false if not

*/

public boolean add (T item)

{

// to be implemented

}

/*

* removes item from set

*

* returns removed item

*/

public T remove ()

{

if (size == 0)

{

return null;

}

T removed = set[size-1];

set[size-1] = null;

size--;

return removed;

}

/*

* returns item from set

*/

public T get()

{

if (size == 0)

{

return null;

}

return set[size-1];

}

/*

* returns true if item is in set, false otherwise

*/

public boolean contains(T item)

{

for (int i = 0; i < size; i++)

{

if (set[i].equals(item))

{

return true;

}

}

return false;

}

/*

* returns size of set

*/

public int size()

{

return size;

}

/*

* returns string representation of contents of set

*/

public String toString()

{

if (size == 0)

{

return "[ ]";

}

String s = "[";

for (int i = 0; i < size()-1; i++)

{

s+= set[i] + ", ";

}

return s + set[size-1] + "]";

}

/*

* doubles size of array if at capacity

*/

private void ensureSpace()

{

if (size == set.length)

{

@SuppressWarnings("unchecked")

T [] larger = (T []) new Object [size * 2];

for (int i = 0; i < size; i++)

{

larger[i] = set[i];

}

set = larger;

larger = null;

}

}

}

LinkedSets.java

/*

* LinkedSet

*

* linked structure implementation of a set

*

* unordered collection with no duplicates allowed

*/

public class LinkedSet implements Set

{

/*

* inner class to represent node

*/

private class Node

{

private T data;

private Node next;

public Node(T item)

{

data = item;

next = null;

}

}

private Node head;

private int size;

/*

* adds item to bag if not already present

*

* returns true if item successfully added, false if not

*/

public boolean add(T item)

{

// to be implemented

}

/*

* removes item from set

*

* returns removed item

*/

public T remove()

{

if (size == 0)

{

return null;

}

T removed = head.data;

head = head.next;

size--;

return removed;

}

/*

* returns item from set

*/

public T get()

{

if (size == 0)

{

return null;

}

return head.data;

}

/*

* returns true if item is in set, false otherwise

*/

public boolean contains(T item)

{

Node current = head;

for (int i = 0; i < size; i++)

{

if (current.data.equals(item))

{

return true;

}

current = current.next;

}

return false;

}

/*

* returns size of set

*/

public int size()

{

return size;

}

/*

* returns string representation of contents of set

*/

public String toString()

{

if (size == 0)

{

return "[ ]";

}

String s = "[";

Node current = head;

while (current.next != null)

{

s += current.data + ", ";

current = current.next;

}

return s + current.data + "]";

}

}

Sets.java

//driver program

/*

* Sets

*

* program for testing add() method in ArraySet and LinkedSet

*/

public class Sets

{

public static void main (String [] args)

{

try

{

Set words = new ArraySet();

//Set words = new LinkedSet();

// create set of fruits

String [] fruits = {"orange", "grape", "kiwi", "coconut", "lime"};

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

{

words.add(fruits[i]);

}

System.out.println(" Here's what's in our set " + words);

// add new item

System.out.println(" Let's add a banana");

String result = words.add("banana") ? "yes" : "no";

System.out.println("Was the operation successful? " + result);

System.out.println("Our set looks like this " + words);

// try to add item already present

System.out.println(" Let's try to add another orange");

result = words.add("orange") ? "yes" : "no";

System.out.println("Was the operation successful? " + result);

System.out.println("Our set looks like this " + words);

// try to add null to set

System.out.println(" Trying to add null to our set");

words.add(null);

}

catch (IllegalArgumentException e)

{

System.out.println(e.getMessage());

}

}

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

More Books

Students also viewed these Databases questions

Question

What are the classifications of Bank?

Answered: 1 week ago