`
fengpeng
  • 浏览: 99941 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个简单的顺序敏感的HashMap

    博客分类:
  • Java
阅读更多
关键字:   java    

HashMap 是无序的.
这段代码是我写的一个可以间接实现有序 HashMap的代码.
写的不好 见笑了
顺便问一下,网上现在有没有更好 更高效的类似的代码?

 

代码
  1. package com.wzj;   
  2.   
  3. import java.util.ArrayList;   
  4. import java.util.HashMap;   
  5. import java.util.List;   
  6.   
  7. /**  
  8.  * @author fins  build 2006-07-18  
  9.  *  顺序敏感的HashMap  
  10.  *  get(int idx)/remove(int idx) 为按加入hashMap的顺序号(index) 来取得/删除 数据  
  11.  */  
  12. public class IndexHashMap extends HashMap  {   
  13.   
  14.     private static final long serialVersionUID = 1L;   
  15.   
  16.     private List list=new ArrayList();   
  17.        
  18.   
  19.     public Object put(Object key, Object value) {   
  20.         if (!containsKey(key)){   
  21.             list.add(key);   
  22.         }   
  23.         return super.put(key, value);   
  24.     }   
  25.   
  26.        
  27.     public Object get(int idx){   
  28.         return super.get(getKey(idx));   
  29.     }   
  30.     public int getIndex(Object key){   
  31.         return list.indexOf(key);   
  32.     }   
  33.     public Object getKey(int idx){   
  34.         if (idx>=list.size()) return null;   
  35.         return list.get(idx);   
  36.     }   
  37.        
  38.     public void remove(int idx){   
  39.         Object key=getKey(idx);   
  40.         removeFromList(getIndex(key));   
  41.         super.remove(key);   
  42.     }   
  43.        
  44.     public Object remove(Object key) {   
  45.         removeFromList(getIndex(key));   
  46.         return super.remove(key);   
  47.     }   
  48.        
  49.     public void clear() {   
  50.         this.list = new ArrayList();   
  51.         super.clear();   
  52.     }   
  53.     private void removeFromList(int idx){   
  54.         if (idx<list.size() && idx>=0) {   
  55.             list.remove(idx);   
  56.         }   
  57.     }   
  58.   
  59. }   
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics