组团学

映射(Map)

阅读 (323663)

1、Map概述

Map接口中键和值一一映射. 可以通过键来获取值。

给定一个键和一个值,你可以将该值存储在一个Map对象之后,你可以通过键来访问对应的值。

2、HashMap类

HashMap也用到了哈希码的算法,以便快速查找一个键,它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap最多只允许一条记录的键为null,允许多条记录的值为null。HashMap非线程安全,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。

import java.util.HashMap; public class MapDemo01 { public static void main(String[] args) { // Map不同于List,它的key不一定是数字 HashMap map = new HashMap(); map.put("Java讲义",109); map.put("python讲义",10); map.put("前端讲义",79); // 如果新的value覆盖了原有的value,该方法返回被覆盖的value System.out.println(map.put("python讲义",99)); // 输出10 System.out.println(map); // 判断是否包含指定key System.out.println("是否包含值为python讲义key:"+map.containsKey("python讲义")); System.out.println("是否包含值为99 value:"+map.containsValue(99)); // 遍历map for (Object key : map.keySet()) { System.out.println(key+"-->"+map.get(key)); } } }

根据键查询值

import java.util.HashMap; import java.util.Set; /** * Map集合的遍历,根据键查询值 * * 思路: * A:获取所有的键 * B:遍历键的集合,获取得到每一个键 * C:根据键查询值 * */ public class MapDemo02 { public static void main(String[] args) { // TODO Auto-generated method stub HashMap<String, String> map = new HashMap<String, String>(); map.put("hello", "world"); map.put("java", "c++"); map.put("sql", "os"); System.out.println(map); // A:获取所有的键 Set<String> set = map.keySet(); // B:遍历键的集合,获取得到每一个键 for (String key : set) { // C:根据键查询值 String value = map.get(key); System.out.println(key + "---" + value); } } }

根据键值对的对象查询键和值

import java.util.HashMap; import java.util.Map; import java.util.Set; /** * Map集合的遍历,根据对象查询键和值 * * 思路: * A:获取所有的键值对对象的集合 * B:遍历键值对对象的集合,得到每一个键值对的对象 * C:获取键和值 * */ public class MapDemo03 { public static void main(String[] args) { // TODO Auto-generated method stub HashMap<String, String> map = new HashMap<String, String>(); map.put("hello", "world"); map.put("java", "c++"); map.put("sql", "os"); System.out.println(map); // A:获取所有的键值对对象的集合 Set<Map.Entry<String, String>> set = map.entrySet(); // B:遍历键值对对象的集合,得到每一个键值对的对象 for (Map.Entry<String, String> me : set) { // C:获取键和值 String key = me.getKey(); String value = me.getValue(); System.out.println(key + "---" + value); } } }

3、TreeMap类

TreeMap则是对键按序存放,因此它便有一些扩展的方法,比如firstKey(),lastKey()等,你还可以从TreeMap中指定一个范围以取得其子Map。
键和值的关联很简单,用put(Object key,Object value)方法即可将一个键与一个值对象相关联。用get(Object key)可得到与此key对象所对应的值对象。

import java.util.Set; import java.util.TreeMap; public class MapDemo04{ public static void main(String[] args) { TreeMap<String, String> map = new TreeMap<String, String>(); //插入键值对 map.put("bkey", "bvalue"); map.put("dkey", "dvalue"); map.put("ckey", "cvalue"); map.put("akey", "avalue"); //获取键值Set Set<String> keySet = map.keySet(); //将键值Set转成数组 Object[] keyArray = keySet.toArray(); //按照键值依序获取值对象 for (int i = 0; i < keyArray.length; i++) System.out.println("key=" + (String) keyArray[i] + "; value=" + map.get((String) keyArray[i])); } }
需要 登录 才可以提问哦