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

Data Structures using Java. public class SortedList { //Array to hold the values

ID: 3759399 • Letter: D

Question

Data Structures using Java.

public class SortedList {

//Array to hold the values

private String[] values;

//Creates empty list

public void createSortedList() {

values = new String[20];

}

//Method to check if list is empty

public boolean sortedIsEmpty() {

//if first element is null then its empty list

return values[0] == null;

}

//Method to return list size

public int sortedSize() {

//Iterate through all items

for (int counter = 0; counter < values.length; counter++) {

//Size is same as index of first null element

if (values[counter] == null) {

return counter;

}

}

//If no null then size is same as array length

return values.length;

}

//Method to add new item

public void sortedAdd(String itemToAdd) {

//If array is full then throw error

if (sortedSize() == values.length) {

throw new ListException("List is full, no need items can be added");

}

//For empty list add to top of list

if (sortedIsEmpty()) {

values[0] = itemToAdd;

return;

}

int size = sortedSize();

int index = -1;

//Iterate through all records in sorted list

for (int counter = 0; counter < size; counter++) {

//Find right index where new item needs to be added

if (values[counter].compareTo(itemToAdd) > 0) {

index = counter;

break;

}

}

if (index==-1) {

//not found so add at the end

values[size] = itemToAdd;

return;

}

//Create new array having the new item

String[] newValuesArr = new String[20];

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

newValuesArr[i] = values[i];

}

//Move main array forward by one

int counter = 0;

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

//If array index same as where new value needs to be added

if (i == index) {

//Add new item

newValuesArr[counter++] = itemToAdd;

}

//Add existing items to new array

newValuesArr[counter++] = values[i];

}

values = newValuesArr;

}

//Method to remove the passed item from list

public void sortedRemove(String itemToRemove) {

//Get index to remove

int index = locateIndex(itemToRemove);

String[] newValuesArr = new String[20];

int counter = 0;

for (int i = 0; i < sortedSize(); i++) {

//copy to new array if it is not the value to be deleted

if(i!=index){

newValuesArr[counter] = values[i];

counter++;

}

}

values = newValuesArr;

}

//Returns the value present at given index and if its not valid index then throws exception

public String sortedGet(int index) {

if(index<0 || index>=sortedSize()){

throw new ListException("Index is out of bounds");

}

return values[index];

}

//Method to find index of value in the array, if not found then exception is thrown

public int locateIndex(String value){

for (int index = 0; index < sortedSize(); index++) {

//If item to lookup is found

if (values[index].equalsIgnoreCase(value)) {

return index;

}

}

throw new ListException("Value "+value+" not found in list");

}

}

////////////////////////////////////////////////////////////////////////////////////////////////

public class ListDriver {

public static void main(String[] args) {

//Create list object

SortedList list = new SortedList();

//Create empty list

list.createSortedList();

//Add 20 items

list.sortedAdd("XYZ 9999");

list.sortedAdd("SSS 1234");

list.sortedAdd("YYY 1111");

list.sortedAdd("ZZZ 5555");

list.sortedAdd("QQQ 5433");

list.sortedAdd("GFD 5443");

list.sortedAdd("DDD 6754");

list.sortedAdd("DDE 2323");

list.sortedAdd("NFR 5432");

list.sortedAdd("QWE 5443");

list.sortedAdd("QWR 5674");

list.sortedAdd("YYY 6666");

list.sortedAdd("EEE 1234");

list.sortedAdd("BBB 5555");

list.sortedAdd("CCC 4433");

list.sortedAdd("SSS 1233");

list.sortedAdd("SDS 4533");

list.sortedAdd("AAA 4444");

list.sortedAdd("BBB 5555");

list.sortedAdd("SSS 5432");

//Display existing items in list

displaySortedList(list);

//Try adding 21st item to list which should throw exception

try{

list.sortedAdd("SSS 2222");

}catch(ListException e){

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

}

int size = list.sortedSize();

String value = "YYY 1111";

//Print size before removing item

System.out.println("Size before removing "+value+": "+size);

//Remove an item

list.sortedRemove(value);

//Print size after removing item

size = list.sortedSize();

System.out.println("Size after removing "+value+": "+size);

displaySortedList(list);

value = "CCC 4433";

//Find index of value to lookup

int locatedIndex = list.locateIndex(value);

System.out.println(value+" located at index "+locatedIndex);

value = "SSS 5432";

//Add a duplicate value and display list

list.sortedAdd(value);

System.out.println("List after adding duplicate value: "+value);

displaySortedList(list);

}

public static void displaySortedList(SortedList list) {

System.out.println("List is ");

for (int i = 0; i < list.sortedSize(); i++) {

System.out.println(list.sortedGet(i) + " ");

}

}

}

Modify it to make the ADT resizable. For this ADT, the MAX_SIZE will not be final, but rather will be increased whenever an new item needs to be added and the array is full (ie. size==MAX_SIZE). Whenever the array needs to grow, add the lesser of: (i) half the current size, or; (ii) 50 additional. Have your ADT report its old and new maximum size whenever the resize operation is called by printing “ADT resized – from xxx to yyy” where xxx is the old size and yyy is the new size. Modify the test driver to increase the number of names to more than 310 (duplicate names are fine).

Explanation / Answer

1) == SortedList.java ==

public class SortedList {
   // Array to hold the values
   private String[] values;
   int length=20;

   // Creates empty list
   public void createSortedList() {
       values = new String[length];
   }

   // Method to check if list is empty
   public boolean sortedIsEmpty() {
       // if first element is null then its empty list
       return values[0] == null;
   }

   // Method to return list size
   public int sortedSize() {
       // Iterate through all items
       for (int counter = 0; counter < values.length; counter++) {
           // Size is same as index of first null element
           if (values[counter] == null) {
               return counter;
           }
       }
       // If no null then size is same as array length
       return values.length;
   }

   // Method to add new item
   public void sortedAdd(String itemToAdd) throws ListException {
       // If array is full then throw error
       if (sortedSize() == values.length) {
           values=growMyArray();
           //throw new ListException("List is full, no need items can be added");
       }
       // For empty list add to top of list
       if (sortedIsEmpty()) {
           values[0] = itemToAdd;
           return;
       }
       int size = sortedSize();

       int index = -1;
       // Iterate through all records in sorted list
       for (int counter = 0; counter < size; counter++) {
           // Find right index where new item needs to be added
           if (values[counter].compareTo(itemToAdd) > 0) {
               index = counter;
               break;
           }
       }
       if (index == -1) {
           // not found so add at the end
           values[size] = itemToAdd;
           return;
       }
       // Create new array having the new item
       String[] newValuesArr = new String[length];
       for (int i = 0; i < size; i++) {
           newValuesArr[i] = values[i];
       }
       // Move main array forward by one
       int counter = 0;
       for (int i = 0; i < size; i++) {
           // If array index same as where new value needs to be added
           if (i == index) {
               // Add new item
               newValuesArr[counter++] = itemToAdd;
           }
           // Add existing items to new array
           newValuesArr[counter++] = values[i];
       }
       values = newValuesArr;
   }

   private String[] growMyArray() {
       int size=(int)(length/2) > 50 ? 50 : (int)(length/2) ;
       int newLength = length + size;
       String[] newdata = new String[newLength];
       System.arraycopy(values, 0, newdata, 0, length);
       System.out.println("Increasing array size from: "+length + " to: "+newLength);
       length=newLength;
       return newdata;

   }

   // Method to remove the passed item from list
   public void sortedRemove(String itemToRemove) throws ListException {
       // Get index to remove
       int index = locateIndex(itemToRemove);
       String[] newValuesArr = new String[length];
       int counter = 0;
       for (int i = 0; i < sortedSize(); i++) {
           // copy to new array if it is not the value to be deleted
           if (i != index) {
               newValuesArr[counter] = values[i];
               counter++;
           }
       }
       values = newValuesArr;
   }

   // Returns the value present at given index and if its not valid index then
   // throws exception
   public String sortedGet(int index) throws ListException {
       if (index < 0 || index >= sortedSize()) {
           throw new ListException("Index is out of bounds");
       }
       return values[index];
   }

   // Method to find index of value in the array, if not found then exception
   // is thrown
   public int locateIndex(String value) throws ListException {
       for (int index = 0; index < sortedSize(); index++) {
           // If item to lookup is found
           if (values[index].equalsIgnoreCase(value)) {
               return index;
           }
       }
       throw new ListException("Value " + value + " not found in list");
   }
}

====

2) == ListDriver.java ===

public class ListDriver {
public static void main(String[] args) throws ListException {
//Create list object
SortedList list = new SortedList();
//Create empty list
list.createSortedList();
//Add 20 items
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
list.sortedAdd("XYZ 9999");
list.sortedAdd("SSS 1234");
list.sortedAdd("YYY 1111");
list.sortedAdd("ZZZ 5555");
list.sortedAdd("QQQ 5433");
list.sortedAdd("GFD 5443");
list.sortedAdd("DDD 6754");
list.sortedAdd("DDE 2323");
list.sortedAdd("NFR 5432");
list.sortedAdd("QWE 5443");
list.sortedAdd("QWR 5674");
list.sortedAdd("YYY 6666");
list.sortedAdd("EEE 1234");
list.sortedAdd("BBB 5555");
list.sortedAdd("CCC 4433");
list.sortedAdd("SSS 1233");
list.sortedAdd("SDS 4533");
list.sortedAdd("AAA 4444");
list.sortedAdd("BBB 5555");
list.sortedAdd("SSS 5432");
list.sortedAdd("SSS 5432");
//Display existing items in list
displaySortedList(list);
//Try adding 21st item to list which should throw exception
try{
list.sortedAdd("SSS 2222");
}catch(ListException e){
System.out.println(e.getMessage());
}

int size = list.sortedSize();

String value = "YYY 1111";
//Print size before removing item
System.out.println("Size before removing "+value+": "+size);
//Remove an item
list.sortedRemove(value);
//Print size after removing item
size = list.sortedSize();
System.out.println("Size after removing "+value+": "+size);
displaySortedList(list);

value = "CCC 4433";
//Find index of value to lookup
int locatedIndex = list.locateIndex(value);
System.out.println(value+" located at index "+locatedIndex);

value = "SSS 5432";
//Add a duplicate value and display list
list.sortedAdd(value);
System.out.println("List after adding duplicate value: "+value);
displaySortedList(list);
}

public static void displaySortedList(SortedList list) throws ListException {
System.out.println("List is ");
for (int i = 0; i < list.sortedSize(); i++) {
System.out.println(list.sortedGet(i) + " ");
}
}

}

======

3) ==ListException.java====


public class ListException extends Exception {


   public ListException(String string) {
       super(string);
   }

}

====