Map集合
特征
Map中集合,元素是成对出现的,元素由键和值两个部分组成,通过键可以找到对应的值。
注:1.集合中的键不可以重复,但是值可以重复,最后一个值会覆盖前面的值。
2.键和值的数据类型可以一致,也可以不一致。
常用字类
HashMap集合
底层是一个Hash表,所以查询速度快。在JDK 1.8以前,由单向链表+ 数组实现
JDK1.8及以后,由数组+单向链表(或者数组+红黑树)实现。
特点:
1.存储和取的顺序可能不一致。
2.多线程集合,速度快,但是存在线程安全。
LinkedHashMap集合
存储和取元素的顺序一致。
常用方法
1.public v put (k key,v value);
将键与值添加到集合中,并返回被替换的value值。
2.public v remove(object key);
将指定键对应的值从集合中删除,并返回被删除的值
3.public v get(Object key);
根据键找到对应的值。
4.boolean containsKey(Object key);
5.public Set<k> keySet();
获取集合中所有键,并存储到Set集合中。
6.public Set<Map.Entry<k,v>> entrySet();
获取Map集合中所有的键和值,并存储到Set集合。
遍历的方法
通过键找值的方法。
1.使用Map集合中setKey()方法,得到集合中的key,并存储到set集合
2.遍历set集合,得到每个key
3.再使用Map集合中的get(key)找到对应的value;
通过Map集合中方法entrySet()
1.使用entrySet()方法,将集合中的Entry对象存储到Set集合中
2.遍历集合,获取每一个entry对象
3.Entry对象可以使用方法 getKey() 和getValue(),分别得到键与值。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class TestMap {
public static void main(String[] args) {
map();
}
public static void map (){
Map<String ,String> emperor = new HashMap<>();
{
//put
emperor.put("秦","秦始皇");
emperor.put("汉","刘邦");
emperor.put("隋","杨坚");
emperor.put("唐","李渊");
emperor.put("元","铁木真");
emperor.put("宋","赵匡胤");
emperor.put("明","朱棣"); //被覆盖
emperor.put("明","朱元璋");
System.out.println(emperor);
//remove
String qin = emperor.remove("秦");
System.out.println("千古一帝"+qin);
//ContainsKey get
if(emperor.containsKey("明")){
String ming = emperor.get("明");
System.out.println(ming);
}
System.out.println(emperor);
System.out.println("******************");
//keySert
Set<String> emperorSet = emperor.keySet();
//使用迭代器遍历
Iterator<String> it = emperorSet.iterator();{
while( it.hasNext()){
String n = it.next();
String s = emperor.get(n);
System.out.println(n+":"+s);
}
}
System.out.println("******************");
//增强for循环
for(String e : emperorSet){
String s = emperor.get(e);
System.out.println(e+"--"+s);