一个排序的Map

原创 2004年10月11日 21:17:00

这里就是一个有序的映射,本来应该做一个哈希表,实在对javascript没有什么了解,只能
凑合着用这个了。查找的复杂度为log(n)
//列表节点
function Entry(key,value){
   this.key=key;
   this.value=value;
}

//有序的映射
function SortedMap(capacity,autoIncrease){
   this.capacity=capacity;
   this.autoIncrease=autoIncrease;
   this.size=0;
   this.ensureCapacity =ensureCapacity;
   this.add = add;
   this.search = search;
   this.buffer =new Array(capacity);
   this.getIndex = getIndex;
   this.get=get;
}
function ensureCapacity(){
 if(this.antoCrease && (this.size>=this.array.length)){
  var old = this.buffer;
  this.buffer=new Array((this.buffer.length+1)*2);
  for(var i=0;i<old.length;i++){
   this.buffer[i]=old[i];
  }
 }
}

function add(entry){
 this.ensureCapacity();
 var index = this.getIndex(entry.key);
 
 for(var i=this.size;i>index;){
  this.buffer[i]=this.buffer[--i];
 }

 this.buffer[index]=entry;
 this.size++; 
}
function getIndex(key){
 if(this.size==0) return 0;
 
 var min=0,max=this.size-1;
 var mid=0;
 while(min<=max){
  mid = (min+max) >> 1;
  if(key==this.buffer[mid].key){
   return mid;
  }
  else if(key<this.buffer[mid].key){
      max=mid-1;
  }
  else{
   min=mid+1;
  }
 }
 mid =(min+max) >>1;
 return mid+1;
}
function search(key){
 var min=0,max=this.size-1;
 
 while(min<=max){
  var mid=(min+max)>>1;
  if(key==this.buffer[mid].key){
   return this.buffer[mid].value;
  }
  else if(key<this.buffer[mid].key){
      max=mid-1;
  }
  else{
   min=mid+1;
  }
 }
 return null;
}
function get(index){
 return this.buffer[index];
}

对map键值进行排序

static void mapSort( Map yourMap){ Map map = new LinkedHashMap(); List keyList = new ArrayLi...
  • lishaojun0115
  • lishaojun0115
  • 2015年12月08日 11:24
  • 523

Java 对Map进行排序的实现方法

Java 对Map进行排序的实现方法HashMap与TreeMap的区别HashMap:最常用的Map,根据键值可以获取Value值,HashMap通过键值的hash来决定存储的位置,存取速度非常快,...
  • qq_26971803
  • qq_26971803
  • 2016年03月26日 11:47
  • 653

对<String,Double>类型的Map根据Value数值由大到小排序

在实际中经常用到对类型的Map根据Value数值由大到小排序,可是每次都记不住代码,需要花好长时间去查找,现在放在这里,方便以后查找。 List> wordMap = new ArrayLi...
  • yunzhongfeiniao
  • yunzhongfeiniao
  • 2013年11月17日 16:47
  • 1812

js中map中元素排序

因为是map,所以不能通过通常的排序方法,要根据key去遍历。 外部循环,每一次循环都把该次循环产生的最大的元素放在map的max位置。 内部循环,首选判断该元素是不是大于map中存放的上一次循环产生...
  • casuallc
  • casuallc
  • 2016年01月17日 10:52
  • 7194

List<Map>集合根据Map里某个key对List集合重新排序介绍

本文主要介绍如何对List类型的集合进行重新排序:按照Map中某个键值进行排序。...
  • a1321941138
  • a1321941138
  • 2016年07月14日 14:21
  • 4027

ccf之数字排序(基于Map集合value从大到小排序)

一直都不知道Map集合要如何根据value值来排序,尤其是当集合的key值要用来和输入值进行比较来决定value值的情况,在这种情况下就不好采用Set集合,不然要遍历整个集合里的元素看哪个对象的变量是...
  • nanjingxilu
  • nanjingxilu
  • 2017年09月13日 21:18
  • 222

Java 实现Map集合排序功能

第一步:Map中新增sort临时键 // 初始化Map集合 List> columns = new ArrayList>(); Map c1 = new HashMap(); c1.put...
  • FOR_CHINA2012
  • FOR_CHINA2012
  • 2015年01月12日 18:35
  • 3596

实现不排序的Map

以下代码实现用vector实现一个map,规避map自动排序功能功能: 通过key值查找 通过[]赋值取值 通过key值删除 成对插入值 #ifndef MAP_H_ #define MAP_H_ ...
  • eerstar
  • eerstar
  • 2017年02月15日 17:03
  • 742

Map按键排序(sort by key), 按值排序(sort by value)。

Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value)。1、按键排序jdk内置的java.util包下的Tree...
  • qq_15807167
  • qq_15807167
  • 2016年07月13日 22:08
  • 19491

如何对map中的value进行排序

package com.demo.map; import java.util.Collections; import java.util.Comparator; import java.util.H...
  • abysstoabyss
  • abysstoabyss
  • 2015年10月19日 15:31
  • 5135
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个排序的Map
举报原因:
原因补充:

(最多只允许输入30个字)