1.Map
Map存储一组键值对象,提供key到value的映射(key唯一无序,value不唯一无序)。
Map集合是双列集合,Map中的集合是成对存在的,每个元素由键和值两部分组成,通过键可以找到对应的值。
Map中的集合不能包含重复的键,值可以重复。每个键只能对应一个值。
2.HashMap
key是无序的,唯一的
value是无序的,不唯一
3.LinkedHashMap
key有序 唯一
value无序,不唯一
4.TreeMap
key有序,唯一
value 无序,不唯一
5.Map中的一些方法
1>创建Map对象
public class TestMap1 {
public static void main(String[] args) {
//创建一个Map对象
Map<String,String> map=new HashMap<String,String>();
//Map<String,String> map=new LinkedHashMap<String,String>();
//Map<String,String> map=new TreeMap<String,String>();
}
}
2>使用Map对象存储键值对
map.put("c","李四");
map.put("e","赵六");
map.put("c","张三");
map.put("a","张三");
map.put("d","王五");
3>获取对象中所有的键key
获取对象中所有的值value
public class TestMap1 {
public static void main(String[] args) {
//创建一个Map对象
Map<String,String> map=new HashMap<String,String>();
//Map<String,String> map=new LinkedHashMap<String,String>();
//Map<String,String> map=new TreeMap<String,String>();
//使用Map对象存储键值对
map.put("c","李四");
map.put("e","赵六");
map.put("c","张三");
map.put("a","张三");
map.put("d","王五");
System.out.println(map.keySet());
System.out.println(map.values());
}
}
运行结果:
从结果可以看出,键key是唯一的,值为“张三”的键覆盖了值为“李四”的键;
值value是可以重复的。
4>通过键获取值
System.out.println(map.get("a"));
运行结果
5>删除对象
public class TestMap1 {
public static void main(String[] args) {
//创建一个Map对象
Map<String,String> map=new HashMap<String,String>();
//Map<String,String> map=new LinkedHashMap<String,String>();
//Map<String,String> map=new TreeMap<String,String>();
//使用Map对象存储键值对
map.put("c","李四");
map.put("e","赵六");
map.put("c","张三");
map.put("a","张三");
map.put("d","王五");
System.out.println(map);
//删除对象
map.remove("e");//通过键删除
map.remove("a","张三");
System.out.println(map);
}
}
运行结果:
6>遍历
方法一:创建一个Set对象,得到所有key组成的Set,通过map.get(key)得到value值,用for-each遍历出来。
Set<String> keySet=map.keySet();
for(String key:keySet){
System.out.println(key+" "+map.get(key));
}
运行结果:
方法二:迭代器,类似于Set的遍历,得到所有Entry组成的集合
Set<Map.Entry<String,String>> entrySet= map.entrySet();
Iterator <Map.Entry<String,String>> it=entrySet.iterator();
while (it.hasNext()){
Map.Entry<String,String> entry = it.next();
System.out.println(entry);
运行结果: