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;
    	}
    }
    

      

  • 相关阅读:
    Rotation Kinematics
    离职 mark
    PnP 问题方程怎么列?
    DSO windowed optimization 代码 (4)
    Adjoint of SE(3)
    IMU 预积分推导
    DSO windowed optimization 代码 (3)
    DSO windowed optimization 代码 (2)
    OKVIS 代码框架
    DSO windowed optimization 代码 (1)
  • 原文地址:https://www.cnblogs.com/qingsheng/p/9125470.html
Copyright © 2011-2022 走看看