implement ArrayList in java

http://www.java2novice.com/java-interview-programs/arraylist-implementation/

Program: Write a program to implement ArrayList.


Description:
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.

Code:
package com.java2novice.algos;

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 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章