/** * use as java.util.HashSet */ function testHashSet(){ alert("HashSet test begin:"); try{ } catch(e){ alert(e); } alert("HashSet test end"); } function HashSet(){ private: this.map=new HashMap(); this.ZERO=new Integer(0); function HashIterator(it){ this.it=it; this.hasNext=hasNext; function hasNext() { return this.it.hasNext(); }
this.next=next; function next() { return this.it.next().getKey(); } } public: this.size=size; function size(){ return this.map.size(); } this.isEmpty=isEmpty; function isEmpty() { return this.map.isEmpty(); } this.contains=contains; function contains(o) { return this.map.containsKey(o); } this.add=add; function add(o) { return this.map.put(o,this.ZERO)==null; } this.addAll=addAll; function addAll(set){ var mod=false; for(var it=set.iterator();it.hasNext();){ if(this.add(it.next())) mod=true; } return mod; } this.remove=remove; function remove(o) { return this.map.remove(o).equals(this.ZERO); } this.clear=clear; function clear() { this.map.clear(); } this.iterator=iterator; function iterator(){ return new HashIterator(this.map.iterator()); } this.equals=equals; function equals(o) { if (o.size() != this.size()) return false; for(var it=this.iterator();it.hasNext();){ if(!o.contains(it.next())) return false; } return true; } this.hashCode=hashCode; function hashCode() { var h=0; for(var it=this.iterator();it.hasNext();){ h+=it.next().hashCode(); } return h; } this.toArray=toArray; function toArray(){ var arr=new Array(); var i=0; for(var it=this.iterator();it.hasNext();){ arr[i++]=it.next(); } return arr; } }

|