javascrip函数库:SortedList.js[1]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 treeroot 的 blog

/**
* binary search list
*/
function testsortedlist(){
 alert("sortedlist test begin:");
 try{
  var list=new arraylist();
  var s=new sortedlist();
  s.add(new javastring("wsg"));
  assert(s.size()==1);
  assert(s.indexof(new javastring("wsg"))==0);

  list.add(new javastring("hello"));
  list.add(new javastring("tom"));
  list.add(new javastring("bush"));
  s.add(new javastring("sina"));
  s.add(new javastring("163"));
  s.add(new javastring("csdn"));
  s.addall(list);
  assert(s.size()==7);
  assert(s.indexof(new javastring("sina"))==4);
  assert(s.indexof(new javastring("ssn"))==5);
  assert(s.indexof(new javastring("sa"))==4);
  //var s2=s.sublist(4,7);
  for(var i=0;i<s.size();i++){
   alert(s.get(i));
  }
 }
 catch(e){
  alert(e);
 }
 alert("sortedlist test end");
}


function sortedlist(){
   private:
   this.buffer =new array();
   var args=sortedlist.arguments;
   if(args.length>0) this.buffer=args[0];
   this.length=this.buffer.length;
   com=null;
  
   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.setcomparator=setcomparator;
   function setcomparator(comp){
     if(this.length!=0) throw "only can be set when list is empty";
  this.com=comp;
   }
   this.getcomparator=getcomparator;
   function getcomparator(){
  return this.com;
   }

   this.hashcode=hashcode;
   function hashcode(){
  var h=0;
  for(var i=0;i<this.length;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;
 }

 
 this.remove=remove;
 function remove(param){
  
  var index=0;
  
  if(isnan(param)){
   index=this.indexof(param);
  }
  else index=param;
  
  
  if(index>=0 && index<this.length){
   for(var i=index;i<this.length-1;i++)
    this.buffer[i]=this.buffer[i+1];
   this.length--;
   return true;
  }
  else return false;
 }
 
 this.add=add;
 function add(obj){
  
  var index = this.indexof(obj);
  for(var i=this.length;i>index;){
   this.buffer[i]=this.buffer[--i];
  }

  this.buffer[index]=obj;
  this.length++;

本文关键:javascrip函数库:SortedList.js
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top