Java Map总结

深层理解Map地址:http://cmsblogs.com/?p=1212

 

1、 Map接口常用的三个实现类:Hashtable(过时)、HashMap、TreeMap

  |--HashMap:采用哈希 表结构。

  |--TreeMap:底层采用红黑二叉树(数组+链表结构)

2、 HashMap:HashMap<K,V>

 |--V put(k,v) - 返回与k对应的旧v(也就是说,如果当前添加的元素key已经存在,则新加入的元素值会替换旧值,put方法会将与之对应的旧值返回。如果没有         就返回null)        

          Map<String, String> map = new HashMap<String,String>();
          map.put("01","hello");
          System.out.println(map.put("01","hi")); //返回"hello", 在map中,新的关系是:01 - hi

  |--v get(key) - 根据Key返回Value。

  |--Set<k> keySet() - 返回一个"k"类型的Set集合,集合中保存的是元素所有的Key(为了使用Set的Iterator对象遍历Map集合)。

  |--Set<Map.Entry<k,v>> entrySet() - 将每一个Key-Value的关系存入到Set集合中,集合的元素类型为"Map.Entry"(此处也是为了使用Set的Iterator。

3、示例:

  |--keySet():

  

import java.util.*;

class MapKeySetTest{

public static void main(String[] args){
    Map<String, String> hasHashMap = new HashMap<String, String>();
    
    hasHashMap.put("01", "zhang san");
    hasHashMap.put("02", "li si");
    hasHashMap.put("03", "wang wu");
    
    System.out.println(hasHashMap);
    
    //为了对Map集合中的元素进行遍历取出,但可惜Map中没有Iterator对象,
    //所以想到可不可转化成其它有Iterator对象的集合从而利用该集合的Iterator呢。
    //Map中提供了keySet()方法,用来将Map元素的Key封装到一个Set集合中,从而利用Set的Iterator实现Key的遍历;
    Set<String> keySet = hasHashMap.keySet();
    System.out.println(keySet);
    
    Iterator<String> it = keySet.iterator();
    while(it.hasNext()){
        String key = it.next();
        String value = hasHashMap.get(key);
        System.out.println(key + ":" + value);
    }
}
    
}

  |--enetrySet():

import java.util.*;

class MapEntrySetTest<k, v>{
        
    public void getMap(Map<k, v> map){
        System.out.println("map size: " + map.size());
    
        Set<Map.Entry<k,v>> entrySet = map.entrySet();
        System.out.println("set size: " + entrySet.size());
        
        //此时的Iterator对象中存放的是Map.Entry 类型的关系对:
        Iterator<Map.Entry<k, v>> it = entrySet.iterator();
        while(it.hasNext()){
            Map.Entry<k, v> entry = it.next();
            //调用Map.Entry的getKey()和getValue()方法用来取出关系对中的Key和对应的Value:
            k key = entry.getKey();
            v value = entry.getValue();
            
            System.out.println("key = " + key + " value = " + value);
        }
    }
}

public class Test<String, String>{
    public static void main(String[] args){
        Map<String, String> map = new HashMap<String, String>();
        MapEntrySetTest mapEntrySetTest = new MapEntrySetTest();
        
        map.put("01", "zhs");
        map.put("02", "lis");
        map.put("03", "wwu");
        mapEntrySetTest.getMap(map);
        
    }
}

 

 
posted @ 2015-11-28 00:49  心灵召唤  阅读(191)  评论(0)    收藏  举报