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

      

  • 相关阅读:
    Qt安装
    Windows下查看进程的工具
    編譯 Boost 1.35.0 (Visual Studio 2005 (VC 8.0) + Windows XP
    boost1.35.0编译日志
    Linux
    Tool
    word cup
    IIS Study
    Oracle PL/SQL语言基础1 [初级] (http://www.cnmpa.com/edu/a1/8/892f4a44496ef382.asp)
    Psychology
  • 原文地址:https://www.cnblogs.com/qingsheng/p/9125470.html
Copyright © 2011-2022 走看看