一、双列集合的特点
(1)双列集合一次需要存一对数据,分为键和值;
(2)键不能重复,值可以重复;
(3)键和值是一一对应的;
(4)“键值对”或者“键值对对象”在Java中叫做“Entry对象”。
二、双列集合的体系结构
上图中红色的圈表示接口,蓝色的圈表示类。
三、Map常见的API
Map是双列集合的顶层接口,它的功能是全部双列集合都可以继承使用的。
//创建Map集合的对象
Map<String,Stirng> m = new HashMap<>();
//添加元素
m.put("杨过","小龙女");
m.remove("杨过");
注意:(1)put()方法除了添加功能外,还有覆盖的功能。添加数据时如果键不存在,则将键值对加入Map集合中,且方法返回值为null;若键已存在,则用新的键值对替代旧的,且方法返回值为被覆盖的旧的键值对。
(2)remove()根据键值删除键值对。
四、Map集合的三种遍历方法
1.键找值:获取所有的键keySet(),把这些键放到一个单列集合中。
Map<String,String> map = new HashMap<>();
map.put("杨过","男");
map.put("小龙女","女");
map.put("杨蓉","女");
Set<String> keys = map.keySet();
for(String key:keys){
String value= map.get(key);//根据键获得值
System.out.println(key+"="+value);
}
2.键值对:通过键值对对象进行遍历entrySet()
Map<String,String> map = new HashMap<>();
map.put("杨过","男");
map.put("小龙女","女");
map.put("杨蓉","女");
Set<Map.Entry<String,string>> entries = map.entrySet();//Map.Entry<String,string>表示键值对对象
for(Map.Entry<String,String> entry:entries)
{
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+"="+value);
}
3.使用Lambda表达式
Map<String,String> map = new HashMap<>();
map.put("杨过","男");
map.put("小龙女","女");
map.put("杨蓉","女");
map.forEach((String key,String value)->{
System.out.println(key+"="+value);
});
五、HashMap
1.特点
(1)HashMap是Map里面的一个实现类;
(2)没有额外需要学习的特有方法,直接使用Map里面的方法就可以了;
(3)特点都是由键决定:无序、不重复、无索引。
(4)HashMap和HashSet一样。