You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
2.5 KiB
Java

/*
Write a program to implement your own ArrayList class. It should
contain add(), get(), remove(), size() methods. Use dynamic array logic.
It should increase its size when it reaches threshold.
*/
import java.util.Arrays;
public class MyArrayList
{
private Object[] myStore;
private int actSize = 0;
public MyArrayList()
{
myStore = new Object[10];
}
public Object get(int index)
{
if(index < actSize)
{
return myStore[index];
}
else
{
throw new ArrayIndexOutOfBoundsException();
}
}
public void add(Object obj)
{
if(myStore.length-actSize <= 5)
{
increaseListSize();
}
myStore[actSize++] = obj;
}
public Object remove(int index)
{
if(index < actSize)
{
Object obj = myStore[index];
myStore[index] = null;
int tmp = index;
while(tmp < actSize)
{
myStore[tmp] = myStore[tmp+1];
myStore[tmp+1] = null;
tmp++;
}
actSize--;
return obj;
}
else
{
throw new ArrayIndexOutOfBoundsException();
}
}
public int size()
{
return actSize;
}
private void increaseListSize()
{
myStore = Arrays.copyOf(myStore, myStore.length*2);
System.out.println("\nNew length: "+myStore.length);
}
public static void main(String a[])
{
MyArrayList mal = new MyArrayList();
mal.add(new Integer(2));
mal.add(new Integer(5));
mal.add(new Integer(1));
mal.add(new Integer(23));
mal.add(new Integer(14));
for(int i=0; i<mal.size(); i++)
{
System.out.print(mal.get(i)+" ");
}
mal.add(new Integer(29));
System.out.println("Element at Index 5:"+mal.get(5));
System.out.println("List size: "+mal.size());
System.out.println("Removing element at index 2: "+mal.remove(2));
for(int i=0; i<mal.size(); i++)
{
System.out.print(mal.get(i)+" ");
}
}
}
/*
Output:
2 5 1 23 14
New length: 20
Element at Index 5:29
List size: 6
Removing element at index 2: 1
2 5 23 14 29