[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/javaarchive/Java/master/DS/src/RList.java [Back]  [Original]

import java.util.ArrayList;
import java.util.List;

public class RList {
	final int DEFAULT_SIZE = 5;
	final int multiplier = 2;
	private int internalSize = DEFAULT_SIZE;
	T[] list;
	int size;
	public RList() {
		this.list = (T[]) new Object[DEFAULT_SIZE]; // Hack
		size = 0;
	}
	public RList(int init_size) {
		this.list = (T[]) new Object[init_size]; // Hack
		size = 0;
	}
	public RList(RList r) {
		this.list = r.list;
		size = r.size;
	}
	public void recreateArray(int size) {
		internalSize = size;
		T[] temp = (T[]) new Object[size]; // Hack
		for(int i = 0; i < this.list.length; i ++) {
			temp[i] = this.list[i];
		}
		this.list = temp;
		
	}
	public void add(T item) {
		this.size ++;
		if(this.size > this.list.length) {
			System.out.println("Extending Array");
			this.recreateArray(internalSize * multiplier);
		}
	}
	public T get(int i) throws ArrayIndexOutOfBoundsException{
		if(i < size) {
			return this.list[i];
		}else {
			throw new ArrayIndexOutOfBoundsException(i+" is out of bounds sry. ");
		}
	}
	// Release must be private
	public void printStats() {
		System.out.println("Internal Size: "+internalSize);
	}
	public void insert(int index, T item) {
		
	}
	public void shift(int start, int end, int newIndex) {
		if(end + newIndex > internalSize) {
			this.recreateArray(internalSize * multiplier);
		}
		
		
		assert start < end;
		T[] newArr = this.list.clone();
		for(int i = start; i < end; i++) {
			
		}
	}
	public static void main(String[] args) {
		long t1 = System.currentTimeMillis();
		RList l = new RList();
		for(int i = 0; i < 99999; i ++) {
			l.add(i);
			
		}
		long t2 = System.currentTimeMillis();
		System.out.println(l.size + " RList took "+(t2-t1)+"ms ");
		l.printStats();
		t1 = System.currentTimeMillis();
		List arraylist = new ArrayList();
		for(int i = 0; i < 99999; i ++) {
			arraylist.add(i);
		}
		t2 = System.currentTimeMillis();
		System.out.println("ArrayList took "+(t2-t1)+"ms \n\n\n");
		//System.out.println(l.list.length);
		System.out.println("Performing get benchmark");
		t1 = System.currentTimeMillis();
		for(int i = 0; i < 99999; i++) {
			l.get(i);
		}
		t2 = System.currentTimeMillis();
		System.out.println("RList took "+(t2-t1)+"ms ");
		t1 = System.currentTimeMillis();
		for(int i = 0; i < 99999; i++) {
			arraylist.get(i);
		}
		t2 = System.currentTimeMillis();
		System.out.println("ArrayList took "+(t2-t1)+"ms ");
	}
	

}

Web Proxy Viewer  |  New URL  |  Original Page