CSE142 Program Example handout #30
Client Code IntListTest.java
----------------------------
// Stuart Reges
// 12/6/05
//
// This program does some basic testing of the IntList class.
import java.util.*;
public class IntListTest {
public static void main(String[] args) {
IntList list = new IntList(10);
Random r = new Random();
// build up a random list
System.out.print("adding:");
for (int i = 0; i < 10; i++) {
int next = r.nextInt(100);
System.out.print(" " + next);
list.add(next);
}
System.out.println();
// print list two ways
System.out.println(list);
System.out.print("get returns:");
for (int i = 0; i < list.size(); i++) {
System.out.print(" " + list.get(i));
}
System.out.println();
// try some sets
list.set(0, 1);
list.set(3, 2);
list.set(9, 3);
System.out.println("after setting 0, 3, 9 to 1, 2, 3: " + list);
// test remove, emptying the list
for (int i = 0; i < 10; i++) {
int n = r.nextInt(list.size());
list.remove(n);
System.out.println("after removing at " + n + ", list = " + list);
}
}
}
Sample Output of IntListTest
----------------------------
adding: 37 64 64 42 74 71 69 82 81 40
[37, 64, 64, 42, 74, 71, 69, 82, 81, 40]
get returns: 37 64 64 42 74 71 69 82 81 40
after setting 0, 3, 9 to 1, 2, 3: [1, 64, 64, 2, 74, 71, 69, 82, 81, 3]
after removing at 9, list = [1, 64, 64, 2, 74, 71, 69, 82, 81]
after removing at 0, list = [64, 64, 2, 74, 71, 69, 82, 81]
after removing at 7, list = [64, 64, 2, 74, 71, 69, 82]
after removing at 5, list = [64, 64, 2, 74, 71, 82]
after removing at 4, list = [64, 64, 2, 74, 82]
after removing at 3, list = [64, 64, 2, 82]
after removing at 1, list = [64, 2, 82]
after removing at 0, list = [2, 82]
after removing at 0, list = [82]
after removing at 0, list = []
Program File IntList.java
-------------------------
// Stuart Reges
// 3/9/05
//
// Class IntList can be used to store a list of integers. It has several
// methods that involve indexing the list. As with Java arrays and Strings,
// index values start with 0. This variation of the IntList will expand if
// necessary to a larger capacity. Class IntList has the following public
// methods:
//
// public IntList(int capacity)
// constructs an integer list with given capacity
//
// public int size()
// returns the current number of elements in the list
// public int get(int index)
// returns the integer at the given index
// public String toString()
// returns a String representation of the list
// public int indexOf(int value)
// returns the index of the given value in the list, -1 if not found
//
// public void add(int number)
// appends the given number to the end of the list
// public void add(int index, int number)
// inserts the given number at the given index, shifting subsequent values
// right
// public void remove(int index)
// removes the value at the given index, shifting subsequent elements left
// public void set(int index, int number)
// replaces the value at the given index with the given value
// public void clear()
// removes all elements from the list making it empty
public class IntList {
private int[] list; // array of integers
private int size; // current length of list
public static final int DEFAULT_CAPACITY = 100;
// pre : capacity >= 0
// post: constructs an empty integer list with the given initial capacity
public IntList(int capacity) {
this.list = new int[capacity];
this.size = 0;
}
// post: returns the current number of elements in the list
public int size() {
return this.size;
}
// pre : 0 <= index < size()
// post: returns the integer at the given index in the list
public int get(int index) {
return this.list[index];
}
// post: creates a comma-separated, bracketed version of the list
public String toString() {
String result = "[";
if (this.size > 0) {
result += this.list[0];
for (int i = 1; i < this.size; i++) {
result += ", " + this.list[i];
}
}
result += "]";
return result;
}
// post : returns the position of the first occurence of the given
// value (-1 if not found)
public int indexOf(int value) {
for(int i = 0; i < this.size; i++) {
if (this.list[i] == value) {
return i;
}
}
return -1;
}
// post: appends the given number to the end of the list
public void add(int number) {
this.list[this.size] = number;
this.size++;
}
// pre : 0 <= index <= size()
// post: inserts the given number at the given index, shifting subsequent
// values right
public void add(int index, int number) {
for (int i = this.size; i > index; i--) {
this.list[i] = this.list[i - 1];
}
this.list[index] = number;
this.size++;
}
// pre : 0 <= index < size()
// post: removes the integer at the given index
public void remove(int index) {
for (int i = index; i < this.size - 1; i++) {
this.list[i] = this.list[i + 1];
}
this.size--;
}
// pre : 0 <= index < size()
// post: replaces the integer at the given index with the given value
public void set(int index, int value) {
this.list[index] = value;
}
// post: list is empty
public void clear() {
this.size = 0;
}
}