一、Map集合
1、引例
根据我们前面所学到的知识,能不能实现以“键值对”为元素进行存取?
存储如下:
key value s001---------------------- Bob s002---------------------- Lily s003---------------------- Jack
我们可以使用ArrayList集合,将每一组键值对存放进集合中,再用split()方法,截取输出,如下:
ArrayList<String> strings = new ArrayList<>();
strings.add("s001--------------------Bob");
String[] split = strings.get(0).split("-+");
System.out.println(split[0]);
System.out.println(split[1]);
但是这种方法显然是不好的,因此,Map集合应运而生。
2、Map概述
Map集合是用来存储具有映射关系的(键值对)数据。
3、Map接口和Collection接口的区别
1) Map是双列的(是双列集合的根接口),Collection是单列的(是单列集合的根接口)
2) Map的键唯一,Collection的子体系Set是唯一的,如果存在相同的键,则会进行值覆盖(具体案例见下)
3) Map集合的数据结构值针对键有效,跟值无关;
如:TreeMap:键是用二叉树算法,HashMap:键是hash算法。
Collection集合的数据结构是针对元素有效
二、HashMap
1、概述
HashMap是基于哈希表的Map接口的非同步实现,此实现提供所有可选的映射操作。并允许使用null值和null键。此类不保证映射的顺序,特别是不能保证这种顺序永久不变。
2、HashMap的数据结构
HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。
3、方法
1)构造方法
HashMap<..., ...> hashMap = new HashMap<>();
Map<..., ...> hashMap = new HashMap<>();//也可以用多态的方式创建对象
<>括号里面填写键的类型和值Value的类型,必须注意这种类型必须是引用数据类型,基本数据类型可以通过包装来实现。
2)添加 put()方法
HashMap<Integer, String> hashMap = new HashMap<>();