1.概述
Map接口是将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
无索引,无序,key唯一,value可重复
2.Map常用实现类(用put()添加元素)
1)HashMap(基于Map接口)
存储特点:无序,元素以键值对形式存在,键不可以重复,值可以重复,元素整体排重,可以快速的通过键查找到所对应的值,线程不安全,通过哈希表实现的集合。
2)LinkedHashMap
存储特点:有序,排重,通过链表实现的集合
3)Hashtable
存储特点:无序,排重,通过哈希表实现的集合.不允许键或值为null,线程安全
4)TreeMap
存储特点:自定义排序
例:
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
public class MapDemo {
public static void main(String[] args) {
//存放值
LinkedHashMap<String, String> con=new LinkedHashMap<String,String>();
con.put("CN", "中华人民共和国");
con.put("USA", "美国");
con.put("JP", "日本");
con.put("JP", "中华人民共和国日本省");
con.put("UK", "中华人民共和国");
System.out.println(con);
System.out.println("个数:"+con.size());
//集合对象.get(key) 获取的是key对应的value
System.out.println(con.get("CN"));
//通过key删除value
con.remove("JP");
System.out.println(con);
}
}
Map集合的遍历:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class MapDemo2 {
public static void main(String[] args) {
Map<String, Student> mapStu=new HashMap<String, Student>();
Student gu=new Student();
gu.setStuName("谷丰");
gu.setStuNo("1001");
Student cui=new Student();
cui.setStuName("崔宸");
cui.setStuNo("1002");
mapStu.put(gu.getStuNo(), gu);
mapStu.put(cui.getStuNo(), cui);
//获取单个对象
Student getGuFeng=mapStu.get("1001");
System.out.println(getGuFeng.getStuName());
//循环遍历
//遍历方式1:
//第一步:先获取到所有key值
Set<String> allKeys=mapStu.keySet();
//第二步:通过Set集合得到迭代器
Iterator<String> it=allKeys.iterator();
//第三步:遍历迭代器中的所有key值
while(it.hasNext()){
String key=it.next();
Student s=mapStu.get(key);
System.out.println(s.getStuName());
}
//遍历方式2:
Set<Entry<String, Student>> entrySet= mapStu.entrySet();
Iterator<Entry<String,Student>> it2=entrySet.iterator();
while(it2.hasNext()){
//it2.next() 得到的是键值对对象
//System.out.println(it2.next());
Entry<String,Student> entry= it2.next();
System.out.println(entry.getKey()+"---------------------"+entry.getValue());
}
}
}
3.HashMap与Hashtable的区别
- 1)Hashtable中的方法都是线程安全的,而HashMap中的方法是非线程安全的
- 2)Hashtable中不允许存在null的键和值,但是HashMap中允许null的键和值