Explanation:
public class ArrayList {
private Object[] array = new Object[1];
/**
* Places new element at location
* @param c, element to be inserted
* @param i, location it is to be placed
*/
public void insert(char c, int i) {
if(i>this.size()){
System.out.println("Index "+i +" outside of list size; max: " +this.size());
System.exit(0);
}
int count = 0;
try {
Object[] other = new Object[this.array.length+1];
switch(i){
case 0:{
other[0] = c;
for(int j=1;j<this.array.length;j++)
other[j] = this.array[j-1];
this.array = other;
break;
}
default: {
for(int j=0;j<i;j++)
other[j] = this.array[j];
other[i] = c;
for(int k=i+1;k<this.array.length;k++)
other[k] = this.array[k-1];
this.array = other;
break;
}
}
}
catch(ArrayIndexOutOfBoundsException exception) {
largerArray();
if(++count == 2){
System.out.println("Something went wrong.");
System.exit(0);
}
}
}
/**
* Places new element at location
* @param object, element to be inserted
* @param index, location it is to be placed
*/
void insert(Object object, int index){
if(index>this.size()){
System.out.println("Index "+index +" outside of list size; max: " +this.size());
System.exit(0);
}
int count = 0;
try {
Object[] other = new Object[this.array.length+1];
switch(index){
case 0:{
other[0] = object;
for(int j=1;j<this.array.length;j++)
other[j] = this.array[j-1];
this.array = other;
break;
}
default: {
for(int j=0;j<index;j++)
other[j] = this.array[j];
other[index] = object;
for(int k=index+1;k<this.array.length;k++)
other[k] = this.array[k];
this.array = other;
break;
}
}
}
catch(ArrayIndexOutOfBoundsException exception) {
largerArray();
if(++count == 2){
System.out.println("Something went wrong.");
System.exit(0);
}
}
}
/**
* Removes element at index
* @param index, location to remove
* @return temp, object removed
*/
Object remove(int index){
if(index>this.size()){
System.out.println("Index "+index +" outside of list size; max: " +this.size());
System.exit(0);
}
Object temp = this.array[index];
int count = 0;
try {
Object[] other = new Object[this.array.length-1];
switch(index){
case 0:{
other[0] = this.array[1];
for(int j=1;j<this.size();j++)
other[j] = this.array[j+1];
this.array = other;
break;
}
default: {
for(int j=0;j<index;j++)
other[j] = this.array[j];
for(int k=index;k<this.size();k++)
other[k] = this.array[k+1];
this.array = other;
break;
}
}
}
catch(ArrayIndexOutOfBoundsException exception) {
largerArray();
if(++count == 2){
System.out.println("Something went wrong.");
System.exit(0);
}
}
return temp;
}
/**
* Copies the array to a new array twice the size.
*/
public void largerArray(){
Object[] other = new Object[this.array.length*2];
System.arraycopy(this.array, 0, other, 0, this.array.length);
this.array = other;
}
/**
* @return true if there are null elements
*/
public boolean isEmpty() {
boolean bool = true;
for (Object element : this.array) {
if(element!=null){
bool = false;
break;
}
else{
bool = true;
break;
}
}
return bool;
}
/**
* Determines the real length of the array
* @return length of non-null elements
*/
public int size(){
int count = 0;
for(int i=0;i<this.array.length;i++){
if(this.array[i]==null)
continue;
else
count++;
}
return count;
}
/**
* Converts array to string.
* @return the Array as a string
*/
public String toString(){
String string = "";
for(int i=0;i<this.size();i++){
if(i<this.size()-1)
string += this.array[i]+", ";
else
string += this.array[i];
}
return string;
}
/**
* Similar to get, imput the character, retrieve index.
* @param object, what we're looking for
* @return index
*/
int indexOf(Object object){
int index = -1;
for(int i=0;i<this.array.length;i++){
if(this.array[i]==(object))
index = i;
else continue;
}
return index;
}
/**
* @param object, Arraylist tyoe
* @return true, if the elements of the arrays are equivalent.
*/
public boolean equals(ArrayList object){
boolean bool = false;
int thisLength = this.array.length;
int objectLength = object.array.length;
if(thisLength > objectLength){
for(int i=0;i<this.array.length;i++)
if(this.array[i] == object.array[i])
bool = true;
else{
bool = false;
break;
}
}
else{
for(int i=0;i<object.array.length;i++)
if(this.array[i] == object.array[i])
bool = true;
else{
bool = false;
break;
}
}
return bool;
}
/**
* Getter to check what is at an index
* @param index, location
* @return the character at this position
*/
Object get(int index){
return this.array[index];
}
}