113 lines
2.8 KiB
Java
113 lines
2.8 KiB
Java
package arraylist;
|
|
|
|
import iterator.IndexListIterator;
|
|
|
|
import java.util.Iterator;
|
|
|
|
/**
|
|
* Created with xgiovio.macbookair.
|
|
* User: xgiovio
|
|
* Date: 24/03/14
|
|
* Time: 14:31
|
|
*/
|
|
//Copyright (c) 2003 Brown University, Providence, RI
|
|
//Additional modifications and methods by xgiovio
|
|
|
|
public class ArrayIndexList<E> implements IndexList<E> {
|
|
private E[] array;
|
|
private int capacity = 100;
|
|
private int size = 0;
|
|
|
|
public ArrayIndexList() {
|
|
array = (E[]) new Object[capacity];
|
|
}
|
|
|
|
public ArrayIndexList(int in_size) {
|
|
array = (E[]) new Object[in_size];
|
|
capacity = in_size;
|
|
}
|
|
|
|
public int size() {
|
|
return size;
|
|
}
|
|
|
|
public boolean isEmpty() {
|
|
return size() == 0;
|
|
}
|
|
|
|
public E get(int r) throws IndexOutOfBoundsException {
|
|
checkIndex(r, size());
|
|
return array[r];
|
|
}
|
|
|
|
public E set(int r, E e) throws IndexOutOfBoundsException {
|
|
checkIndex(r, size());
|
|
E temp = array[r];
|
|
array[r] = e;
|
|
return temp;
|
|
}
|
|
|
|
public void add(int r, E e) throws IndexOutOfBoundsException {
|
|
checkIndex(r, size() + 1);
|
|
if (size == capacity) {
|
|
capacity *= 2;
|
|
E[] B =(E[]) new Object[capacity];
|
|
for (int i=0; i<size; i++)
|
|
B[i] = array[i];
|
|
array = B;
|
|
}
|
|
for (int i=size-1; i>=r; i--)
|
|
array[i+1] = array[i];
|
|
array[r] = e;
|
|
size++;
|
|
}
|
|
|
|
public E remove(int r) throws IndexOutOfBoundsException {
|
|
checkIndex(r, size());
|
|
E temp = array[r];
|
|
for (int i=r; i<size-1; i++)
|
|
array[i] = array[i+1];
|
|
size--;
|
|
return temp;
|
|
}
|
|
|
|
|
|
protected void checkIndex(int r, int n) //
|
|
throws IndexOutOfBoundsException { //
|
|
if (r < 0 || r >= n)
|
|
throw new IndexOutOfBoundsException("Illegal index: " + r);
|
|
}
|
|
|
|
|
|
@Override
|
|
public String toString() {
|
|
|
|
String to_return = "";
|
|
to_return = to_return + "[";
|
|
|
|
for ( int i = 0; i< size() ; i++){
|
|
|
|
if ( i== size() -1){
|
|
to_return+=(get(i).toString());
|
|
}else{
|
|
to_return+=(get(i).toString() + ",");
|
|
}
|
|
}
|
|
to_return = to_return + "]";
|
|
|
|
return to_return;
|
|
}
|
|
|
|
@Override
|
|
///////////////// implemented used a generic IndexListIterator
|
|
public Iterator<E> iterator() {
|
|
|
|
E[] temp = (E[])new Object[this.size()];
|
|
for (int i = 0 ;i < this.size(); i++){
|
|
temp[i] = this.get(i);
|
|
}
|
|
return new IndexListIterator<E>(temp);
|
|
|
|
}
|
|
}
|