Java中自写Map

来源:互联网 发布:买火车票12306软件 编辑:程序博客网 时间:2024/04/27 20:13

Map的底层实现是数组加链表
配合LinkedList看吧http://blog.csdn.net/jav_zhangwei/article/details/75577972

package tk.zhangwei.collection;import java.util.LinkedList;/*** * map的底层实现是:数组加链表 * @author zw * */public class SxtMap02 {        LinkedList[] arr = new LinkedList[999];        int size;        public void put(Object key,Object value){            SxtEntry e = new SxtEntry(key, value);            int a = key.hashCode()%999;            if(arr[a] == null){                LinkedList list = new LinkedList();                arr[a] = list;                list.add(e);            }else{                LinkedList list = arr[a];                for(int i =0;i<list.size();i++){                    SxtEntry e2 = (SxtEntry) list.get(i);                    if(e2.key.equals(key)){                        e2.value = value;//键值重复直接覆盖                        return;                    }                }                arr[a].add(e);            }        }        public Object get(Object key){            int a = key.hashCode()%999;            if(arr[a] !=null){                LinkedList list =arr[a];                for(int i=0;i<list.size();i++){                    SxtEntry e = (SxtEntry)list.get(i);                    if(e.key.equals(key)){                        return e.value;                    }                }            }            return null;        }        public static void main(String[] args){            SxtMap02 list = new SxtMap02();            list.put("zzz", new wife("oooo"));            list.put("bbb", new wife("eeee"));            list.put("ccc", new wife("wwww"));            list.put("ddd", new wife("ssss"));            wife w = (wife) list.get("ccc");            System.out.println(w.name);        }}
原创粉丝点击