Map的作用:
List集合是一种单列集合,是一种顺序列表,而map是一种键值对集合,用key和value表示,就比如根据名字查找对应的歌曲,名字就是key,歌曲就是value,即通过特定的关键信息查找对应的值用List依次遍历查找效率非常低,而map这种(K-V)键值对数据结构,作用就是能高效的通过key来找到对应的value
import java.util.HashMap;
import java.util.Map;
public class demo04 {
public static void main(String[] args) {
Map<String,Integer> map= new HashMap<String,Integer>();
map.put("张三",24);//向map集合中添加元素
map.put("李四",20);
map.put("王五",21);
System.out.println(map);
int ret=map.get("李四");//通过“李四”键得到对应的value
System.out.println("李四的年龄是:"+ret);
}
}
运行结果:
Map类有几个常见的实现类:
HashMap : 特点:无序
数据结构:数组+链表+红黑树
LinkedHashMap : 特点:有序
数据结构:数组+链表+红黑树,(为什么有序)在此基础上多维护了一条双向链表,用来记录元素放进集合的顺序
TreeMap : 特点:按照key自动排序
数据结构:红黑树(有序的自平衡二叉树)
HashTable : 特点:无序,线程安全,性能低,不允许null做key,不允许null做value(会导致空指针异常)
数据结构:数组+链表
遍历Map:
(1)遍历map中的所有key值时,可以用到 keySet() 方法,返回值是一个Set类型的集合,通过foreach遍历拿到所有的key值
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class demo04 {
public static void main(String[] args) {
Map<String,Integer> map= new HashMap<String,Integer>();
map.put("张三",24);//向map集合中添加元素
map.put("李四",20);
map.put("王五",21);
map.put("小王",23);
map.put("小杨",20);
System.out.println(map);
Set<String> set=map.keySet();
for(String s:set){
System.out.println(s);
}
}
}
运行结果:
(2)遍历所有的value值时,可以用到map的 values() 方法,返回类型是一个Collection集合,包含了所有的value值
public class demo04 {
public static void main(String[] args) {
Map<String,Integer> map= new HashMap<String,Integer>();
map.put("张三",24);//向map集合中添加元素
map.put("李四",20);
map.put("王五",21);
map.put("小王",23);
map.put("小杨",20);
System.out.println(map);
Collection<Integer> co=map.values();
for(Integer n:co){
System.out.println(n);
}
}
}
运行结果:
(3)同时遍历key和value时,可以用到 entrySet() 方法,它包含每一个key-value映射
public class demo04 {
public static void main(String[] args) {
Map<String,Integer> map= new HashMap<String,Integer>();
map.put("张三",24);//向map集合中添加元素
map.put("李四",20);
map.put("王五",21);
map.put("小王",23);
map.put("小杨",20);
System.out.println(map);
for(Map.Entry<String,Integer> en:map.entrySet()){
System.out.print(en.getKey()+"\t");//得到所有的key
System.out.print(en.getValue()+"\t");//得到所有的value
}
}
}
目录