Map集合的特点:
a.Collection每个元素单独存在(单列),Map每个元素成对存在(双列)
b.Map集合键必须是唯一的,值是可以重复的
c.Collection<E>中泛型只有一个,Map<K,V>中泛型有两个(其中K代表键的类型,V代表值的类)
Collection集合称为单列集合,Map集合称为双列集合
Map接口有三个常见的实现类:
HashMap: 底层采用哈希表结构, 无序
LinkedHashMap:底层采用链表+哈希表结构,有序
TreeMap: 底层采用红黑树结构,无序(但是键有自然顺序)
重点: Map中为了保证键的唯一性,如果键是自
Map接口定义的通用方法
增: V put(K 键,V 值); 添加一个键值对,返回null
删: V remove(K 键);根据键去删除键值对,返回被删除的键值对的值
改: V put(K 键,V 值); 添加一个重复的键时,该方法变成修改,返回修改前的值
查: V get(K 键); 根据键获取对应的值
其他:
|
Map的遍历;
1、以键找值
第一种方式称为:以键找值
public class TestMap01 {
public static void main(String[] args) {
//第一种遍历方式:以键找值
//1.创建一个Map的实现类对象
HashMap<String, Integer> map = new HashMap<String, Integer>();
//2.添加几个
map.put("张三", 18);
map.put("李四", 28);
map.put("王五", 38);
//3.获取所有的键
Set<String> keys = map.keySet();
//4.遍历这个keys集合
for (String key : keys) {
//5.以键找值
Integer value = map.get(key);
System.out.println(key + "..." + value);
}
}
}
2、键值对方式
public class TestMap02 {
public static void main(String[] args) {
//1.创建一个Map的实现类对象
HashMap<String, Integer> map = new HashMap<String, Integer>();
//2.添加几个
map.put("张三", 18);
map.put("李四", 28);
map.put("王五", 38);
//Map集合遍历的第二种方式:键值对方式
//3.获取Map中所有的键值对
Set<Map.Entry<String, Integer>> entries = map.entrySet();
//4.遍历这个entries集合
for (Map.Entry<String, Integer> entry : entries) {
//5.从entry中取出键和值
String key = entry.getKey();
Integer value = entry.getValue();
//6.打印
System.out.println(key+"..."+value);
}
}
}
实现类:
HashMap:基于哈希表的 Map 接口的实现。无序
HashMap可以使用null值最为key或value;
LinkedHashMap:基于哈希表和链接列表实现。有序
TreeMap:基于红黑树(Red-Black tree)的 NavigableMap
实现。
该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator
进行排序,具体取决于使用的构造方法