首页 > 其他 > 详细

Map

时间:2020-03-14 17:35:24      阅读:55      评论:0      收藏:0      [点我收藏+]

Map接口
--实现Map接口的类用来存储键(key)-值(value)对
--Map接口的实现类有HasMap和TreeMap
--键值对通过键来唯一标识,不能重复

map底层是数组+链表
package TestList;
import java.util.HashMap;
import java.util.Map;


public class TestMap {
   public static void main(String[] args) {
    Map map=new HashMap();
    
    //put
    map.put("张三", new Wife("aaa"));
    map.put("李四", new Wife("bbb"));
    
    
    System.out.println(map.containsKey("张三"));//true
    System.out.println(map.containsValue(new Wife("aaa")));//false
    
    //get 
    Wife w=(Wife)map.get("张三");
    System.out.println(w.name);//aaa
    
    
    //remove
    /*
     * 将对象从容器中移除,但是对象本身还存在
    map.remove("张三");
    System.out.println(w.name);//aaa
    
    map.remove("李四");    
    Wife w1=(Wife)map.get("李四");
    System.out.println(w1.name);//NullPointerException 
    */
    
    
}
}


class Wife{
    String name;
    public Wife(String name) {
        this.name=name;
    }
}
package TestList;
/**
 * map底层是数组+链表
 */

import java.util.LinkedList;

public class MyMapLinked {
    //List数组
    LinkedList[] arr=new LinkedList[999];
    int size;
    
    public void put(Object key,Object value) {
        //获取键值对象
        MyEntry e=new MyEntry(key,value);
        
        //获取key的哈希值    
        int hash=key.hashCode();
        hash=hash<0?-hash:hash;
        int a=hash%arr.length;
        
        if(arr[a]==null) {
            //创建List对象
            LinkedList list=new LinkedList();
            list.add(e);//将entry放入List    
            arr[a]=list;//List放入array
                            
        }
        else {
            //获取List对象
            LinkedList list=arr[a];
            for(int i=0;i<list.size();i++) {
                MyEntry e1=(MyEntry)list.get(i);
                if(e1.key.equals(key)) {
                    e1.value=value;
                }
                
            }    
            
                    
        }
    }
        
    public Object get(Object key) {
        
        //获取key的哈希值
        int a=key.hashCode()%arr.length;
        
        if(arr[a]!=null) {
            LinkedList list=arr[a];
            for(int i=0;i<list.size();i++) {
                MyEntry e=(MyEntry)list.get(i);
                if(e.key.equals(key)) {
                    return e.value;
                }
                
            }        
            
        }
        
        return null;        
    }
        
            
    
    public static void main(String[] args) {
        MyMapLinked map=new MyMapLinked();
        map.put("张三","aaa");
        map.put("李四","bbb");
        map.put("李四","ccc");

        System.out.println(map.get("张三"));//aaa
        System.out.println(map.get("李四"));//ccc
        
        
    }

}

 

Map

原文:https://www.cnblogs.com/hapyygril/p/12493120.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!