/**
use as arraylist for java programmer
*/
function testarraylist(){
alert("arraylist test begin:");
try{
var list=new arraylist();
assert(list.isempty());
assert(list.size()==0);
list.add(new integer(100));
list.add(new integer(200));
list.add(new integer(33));
assert(!list.isempty());
assert(list.size()==3);
var list2=new arraylist();
list2.add(new integer(32));
list2.addall(list);
assert(list2.size()==4);
list2.add(new integer(200));
assert(list2.indexof(new integer(200))==2);
assert(list2.lastindexof(new integer(200))==4);
assert(list2.contains(new integer(200)));
list2.removeall(list);
assert(list2.size()==2);
assert(list2.contains(new integer(200)));
assert(list2.get(0).equals(new integer(32)));
list2.addall(list);
list2.retainall(list);
assert(list2.size()==4);
assert(list2.get(0).intvalue()==200);
assert(list2.get(1).intvalue()==100);
assert(list2.get(2).intvalue()==200);
assert(list2.get(3).intvalue()==33);
assert(!list.equals(list2));
list2.remove(0);
assert(list.equals(list2));
list2.set(0,new integer(200));
assert(!list.equals(list2));
list2.set(1,new integer(100));
assert(list.equals(list2));
assert(list.containsall(list2));
list2.clear();
assert(list2.isempty());
assert(list2.size()==0);
assert(list.containsall(list2));
assert(!list2.iterator().hasnext());
var it=list.iterator();
assert(it.hasnext());
it.next();
assert(it.hasnext());
it.next();
assert(it.hasnext());
it.next();
assert(!it.hasnext());
}
catch(e){
alert(e);
}
alert("arraylist test end");
}
function arraylist(){
private:
this.buffer=new array();
var args=arraylist.arguments;
if(args.length>0) this.buffer=args[0];
this.length=this.buffer.length;
function listiterator(table,len){
this.table=table;
this.len=len;
this.index=0;
this.hasnext=hasnext;
function hasnext() {
return this.index< this.len;
}
this.next=next;
function next() {
if(!this.hasnext())
throw "no such element!";
return this.table[this.index++];
}
}
public:
this.hashcode=hashcode;
function hashcode(){
var h=0;
for(var i=0;i<this.lengh;i++)
h+=this.buffer[i].hashcode();
return h;
}
this.size=size;
function size(){
return this.length;
}
this.clear=clear;
function clear(){
this.length=0;
}
this.isempty=isempty;
function isempty(){
return this.length==0;
}
this.toarray=toarray;
function toarray(){
var copy=new array();
for(var i=0;i<this.length;i++){
copy[i]=this.buffer[i];
}
return copy;
}
this.get=get;
function get(index){
if(index>=0 && index<this.length)
return this.buffer[index];
return null;
}