Java基础(十四)——Map(集合)、HashMap、TreeMap

Java基础(十四)——Map(集合)

一、Map

Map:以键值对形式存储对象,key—value:key是唯一,value是可重复的。

二、HashMap

HashMap:key是无序不可重复。

1、HashMap不可重复

来验证下不可重复特性:
在这里插入图片描述

可以看到,重复的并没有出现

2、Key相同,后出现元素覆盖前面元素

如果 Key 相同的情况下,后出现的元素会覆盖前面的元素:
在这里插入图片描述

3、获取元素

HashMap 获取元素不能用 for 循环遍历,因为 通过 .get()获取的元素,如果 key 不存在,value 就会返回 null:
在这里插入图片描述

这里记住一点,无序的东西都没办法通过索引去获取到元素。

同样的,这里迭代器跟 foreach 也不可用。

4、通过 Collection 的迭代器帮助遍历 HashMap

a、方法一:通过Set()的方式

我们只需要获取到 key,那么就能获取到 value,所以重点就是如何获取到 key,以及遍历它:
在这里插入图片描述
这样,就能完成遍历输出。

b、方法二:通过 entry.set()方式

这种方式,可以直接取 key 跟 value:
在这里插入图片描述

5、删除

在这里插入图片描述

可以看到删除有两种方式,一个是根据 key 来删除,另一个是 key-value:
根据 key 来删除的话,可以看到右边有个返回值类型,是 int 类型,删除的同时会返回 value 的值。

6、修改

修改 key :先删除后添加。
修改 value:直接覆盖。

7、自定义对象当作 key 和 value

自定义两个对象,然后输出:
在这里插入图片描述

在这里插入图片描述
可以发现,有重复的元素。不是说会去重吗?
原因是因为:这里没有重写 equal()方法和 hashcode()方法。而且,必须是,当作 key 的对象重写方法:

重写以后:
在这里插入图片描述

这时可以发现,已经完成了去重了。

三、TreeMap

TreeSet 的底层就是 TreeMap,所以有需要看相关知识看前面的博客即可。这里只提一部分:

TreeMap 存储自定义对象,当作 key 的对象需要实现自然排序或者传递比较器。如果这两个之一都没有实现,运行时就会报类型转换的错误。

猜你喜欢

转载自blog.csdn.net/qq_41824825/article/details/121320784