Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。以前常见的
搜索方式有:
- 直接遍历,时间复杂度为O(N),元素如果比较多效率会非常慢
- 二分查找,时间复杂度为log 2为底的N ,但搜索前必须要求序列是有序的
上述排序比较适合静态类型的查找,即一般不会对区间进行插入和删除操作了,而现实中的查找比如:- 根据姓名查询考试成绩
- 通讯录,即根据姓名查询联系方式
- 不重复集合,即需要先搜索关键字是否已经在集合中
可能在查找时进行一些插入和删除的操作,即动态查找,那上述两种方式就不太适合了,本节介绍的Map和Set是 一种适合动态查找的集合容器
一般把搜索的数据称为关键字(Key),和关键字对应的称为值(Value),将其称之为Key-value的键值对,所以
模型会有两种:
- 纯 key 模型,比如:
有一个英文词典,快速查找一个单词是否在词典中
快速查找某个名字在不在通讯录中- Key-Value 模型,比如:
统计文件中每个单词出现的次数,统计结果是每个单词都有与其对应的次数:<单词,单词出现的次数>
梁山好汉的江湖绰号:每个好汉都有自己的江湖绰号
而Map中存储的就是key-value的键值对,Set中只存储了Key。
Map官方文档
Map是一个接口类,该类没有继承自Collection,该类中存储的是
Map.Entry
注意:Map.Entry
public static void main(String[] args) {Map map = new HashMap<>();map.put("hello",2);map.put("bit",4);map.put("wwww",3);System.out.println(map);}
根据对应的key值返回对应的value值
public static void main(String[] args) {Map map = new HashMap<>();map.put("hello",2);map.put("bit",4);map.put("wwww",3);System.out.println(map.get("bit"));}
public static void main(String[] args) {Map map = new HashMap<>();map.put("hello",2);map.put("bit",4);map.put("wwww",3);System.out.println(map.getOrDefault("AAA",18));}
public static void main(String[] args) {Map map = new HashMap<>();map.put("hello",2);map.put("bit",4);map.put("wwww",3);System.out.println(map);map.remove("bit");System.out.println(map);}
至于为什么说 keySet方法 是返回不重复的集合。
是因为 Set 中 相同的数据只能存储一次。也就说Set里面存储的元素都是不同的。
这个在讲到Set的时候,你们就明白了。
而在 Map 中 存储 相同的元素,也有着自身的特点。
其 value 会根据最后一次的put的value值,进行更新。
注意:
1、Map 是一个接口,不能直接实例化对象,如果实例化对象只能实例化其实现类 TreeMap 和 HashMap。
2、Map中存储“键值对” 的 Key 是唯一的,value 是可重复的。
3、在 TreeMap 中插入“键值对”时,key不能为null,否则就会抛出【NullPointerException异常】,但是Value可以为null。【HashMap 就没有这个问题】
4、Map 中的 Key 可以全部分离出来,存储到 Set中来进行访问(因为 Key 是不能重复)。
5、Map 中的 Value 可以全部分离出来,存储在 Collection 的 任何一个子集合中(value可能有重复)。
6、Map 中 “键值对” 的 Key 不能直接修改**,value可以修改,如果要修改 Key,只能先将Key删除掉,然后再来进行重新插入。
7、TreeMap 和 HashMap 的区别
Set官方文档
Set与Map主要的不同有两点:Set是继承自Collection的接口类,Set中只存储了Key。
而 Map 是一个单独的接口,Map 中 存储 Key - Value
另外,Set 又称集合【Set 的汉语意思就是 集合】,它具有去重的功能,相同的元素,它只存储一个。
可参考 java -数据结构,List相关基础知识
注意:
上一篇:乡镇小本创业项目有哪些 乡镇小本生意创业项目2021 做什么生意适合乡镇小本开店
下一篇:适合穷人7个稳赚的小本投资创业好创业好项目小本投资项目! 适合穷人的创业项目投资小赚钱快 适合穷人的小本创业项目推荐见效