一个简单的顺序敏感的HashMap

关键字:   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. }   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值