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

浙公网安备 33010602011771号