1、Map概述
Map接口中键和值一一映射. 可以通过键来获取值。
给定一个键和一个值,你可以将该值存储在一个Map对象之后,你可以通过键来访问对应的值。
2、HashMap类
HashMap也用到了哈希码的算法,以便快速查找一个键,它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap最多只允许一条记录的键为null,允许多条记录的值为null。HashMap非线程安全,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。
代码语言:javascript复制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));
}
}
}
根据键查询值
代码语言:javascript复制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);
}
}
}
根据键值对的对象查询键和值
代码语言:javascript复制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对象所对应的值对象。
代码语言:javascript复制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]));
}
}