zoukankan      html  css  js  c++  java
  • 自定义实现Map类 高效版

    package text;
    import java.util.*;
    
    /*
     *自定义Map的升级版
     *提高查询的效率 
     *数组套列表套对象
     * */
    
    public class SxtMap002{
    	LinkedList[] arr= new LinkedList[999];//Mapde 底层实现结构是:数组+链表
    	int size;
    	
    	public void put(Object key,Object value){
    		SxtEntry e=new SxtEntry(key,value);
    		
    		int a=key.hashCode()%arr.length;     //利用hashCode方法求出要存放的位置
    		if(arr[a]==null){
    			LinkedList list=new LinkedList();
    			arr[a]=list;//将list插入数组中
    			list.add(e);//将Sxtentry对象插入列表中
    		}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()%arr.length;
    		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){
    		SxtMap002 m=new SxtMap002();
    		m.put("张三",new Wife("杨幂"));
    		m.put("张三",new Wife("李四"));
    		Wife w=(Wife) m.get("张三");
    		System.out.println(w.name);
    	}
    }
    class Wife{
    	String name;
    	public Wife(String name){
    		this.name=name;
    	}
    }
    

      

  • 相关阅读:
    linux_grep操作
    linux_awk操作
    linux_sed操作
    [题解]USACO 5.2.1 Snail Trails
    [数据生成器]UVA10054 The Necklace
    [题解]UVA10054 The Necklace
    [题解]UVA11027 Palindromic Permutation
    [题解]UVA10129 Play on Words
    [题解]UVA11029 Leading and Trailing
    计蒜客NOIP2017提高组模拟赛(五)day1-机智的 AmyZhi
  • 原文地址:https://www.cnblogs.com/qingsheng/p/9125470.html
Copyright © 2011-2022 走看看