1、Map接口—查找表
HashMap 是一个散列表
,它存储的内容是键值对(key-value)映射。
- Map体现的结构是一个多行两列的表格,其中左列称为“Key”,优列称为“value”
(1)特点:
-①HashMap 实现了 Map 接口
,根据键(Key)
的 HashCode 值存储数据,具有很快的访问速度
,最多允许一条记录的键为 null,不支持线程同步。
-②HashMap 是无序的,即不会记录插入的顺序。
-③HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。
HashMap 的 key 与 value 类型可以相同也可以不同,可以是字符串(String)类型的 key 和 value,也可以是整型(Integer)的 key 和字符串(String)类型的 value。
例:
-//创建一个HashMap对象map,字符串(String)类型的key和整型(Integer)的value:
-Map<String,Integer> map = new HashMap();
《MapDemo.java》:
package map;
import java.util.HashMap;
import java.util.Map;
/**
* java.util.Map接口 查找表
* Map体现的结构是一个多行两列的表格,其中左列称为“Key”,优列称为“value”
* Map总是以Key-value对的形式保存一组数据。并且可以根据key获取对应的value。
* Map有一个要求,Key不允许重复(equals比较)
*
* 常用实现类:
* java.util.HashMap,我们称他为“散列表”,当今查询速度最快的数据结构。
*/
public class MapDemo {
public static void main(String[] args) {
//创建一个HashMap对象map,字符串(String)类型的key和整型(Integer)的value:
Map<String,Integer> map = new HashMap();
/*
v put(K k,V v):向当前Map中保存一组键值对
-添加元素:HashMap类提供了很多有用的方法,添加键值对(key-value)可以使用put()方法:
-会以:“key=value”的形式打印。 例:“语文=99”
*/
map.put("语文",99);
/*
如果Map的value是包装类类型,获取时不要用基本类型(int)接收,避免自动拆箱引发空指针
例:int value = map.put("化学",80);//会报空指针异常
自动拆箱成:int value = map.put("化学",80).intValue();系统默认在后边加上".intValue()"。
*/
Integer value = map.put("数学",98);//Key不存在时,put方法返回值为null
map.put("物理",97);
map.put("化学",99);
System.out.println(map);//{物理=97, 数学=98, 化学=99, 语文=99}
value = map.put("数学",77);//Key已经存在则替换value,但是返回值为Key原来对应的value(98)
System.out.println("value:"+value);//value:98
System.out.println(map);//{物理=97, 数学=77, 化学=99, 语文=99}
/*
v get(Object Key):根据指定的Key获取对应的value,如果给定的Key不存在,则返回值为null
*/
value = map.get("语文");
System.out.println("语文:"+value);//语文:99
value = map.get("体育");
System.out.println("体育:"+value);//体育:null
}
}