Tut04 - james-bern/CS136 GitHub Wiki
NOTE: If you finish early, implement remove(int index)
and add more test code 🙂👍 You can also implement bubbleSort()
and quickSort()
.
import java.util.Arrays;
class Tut04 extends Cow {
static class XArrayList {
int length;
String[] internalArray;
XArrayList() { // constructor
this.length = 0;
this.internalArray = new String[2];
}
void add(String element) {
// TODO
}
void add(int index, String element) {
// TODO
}
// This function is called when we print.
public String toString() {
String result = "";
result += "[";
for (int i = 0; i < this.length; ++i) {
result += this.internalArray[i];
if (i != (this.length - 1)) result += ", ";
}
result += "]";
result += " // ";
result += Arrays.toString(this.internalArray);
return result;
}
}
public static void main(String[] arguments) {
XArrayList list = new XArrayList();
PRINT(list); // [] // [null, null]
list.add("Hello");
PRINT(list); // [Hello] // [Hello, null]
list.add("Cruel");
PRINT(list); // [Hello, Cruel] // [Hello, Cruel]
list.add("World");
PRINT(list); // [Hello, Cruel, World] // [Hello, Cruel, World, null]
list.add(1, "Mister");
PRINT(list); // [Hello, Mister, Cruel, World] // [Hello, Mister, Cruel, World]
list.add(0, "Oh");
PRINT(list); // [Oh, Hello, Mister, Cruel, World] // [Oh, Hello, Mister, Cruel, World, null, null, null]
}
}
👀
import java.util.Arrays;
class Tut04 extends Cow {
static class XArrayList {
int length;
String[] internalArray;
XArrayList() {
this.length = 0;
this.internalArray = new String[2];
}
void add(String element) { // append (push back) element
add(this.length, element);
}
void add(int index, String element) { // insert element so it has index index
ASSERT(index >= 0);
ASSERT(index <= this.length);
// if full, double size of internalArray
boolean isFull = (this.length == this.internalArray.length);
if (isFull) {
String[] tmp = new String[2 * this.length];
for (int i = 0; i < this.length; ++i) {
tmp[i] = this.internalArray[i];
}
this.internalArray = tmp;
}
// move stuff over to make room
// NOTE: make sure to iterate backwards to avoid the brocolli problem
for (int i = (this.length - 1); i >= index; --i) {
this.internalArray[i + 1] = this.internalArray[i];
}
// write new element
this.internalArray[index] = element;
this.length++;
}
// This function is called when we print.
public String toString() {
String result = "";
result += "[";
for (int i = 0; i < this.length; ++i) {
result += this.internalArray[i];
if (i != (this.length - 1)) result += ", ";
}
result += "]";
result += " // ";
result += Arrays.toString(this.internalArray);
return result;
}
}
public static void main(String[] arguments) {
XArrayList list = new XArrayList();
PRINT(list); // [] // [null, null]
list.add("Hello");
PRINT(list); // [Hello] // [Hello, null]
list.add("Cruel");
PRINT(list); // [Hello, Cruel] // [Hello, Cruel]
list.add("World");
PRINT(list); // [Hello, Cruel, World] // [Hello, Cruel, World, null]
list.add(1, "Mister");
PRINT(list); // [Hello, Mister, Cruel, World] // [Hello, Mister, Cruel, World]
list.add(0, "Oh");
PRINT(list); // [Oh, Hello, Mister, Cruel, World] // [Oh, Hello, Mister, Cruel, World, null, null, null]
}
}