一.map集合的特点
- 键值对存储:Map集合内部维护了一个键值对的数据结构,使用键来访问对应的值。
2.键的唯一性:Map中的键是唯一的,不能重复,但值可以重复
3.线程不安全:多个线程同时对一个Map进行操作时,可能会引发线程安全问题
但是可以使用Hashtable,Hashtable是安全的
4.遍历方式:Map集合提供了多种遍历方式,包括迭代器、forEach等。
二.map集合的遍历方式
entrySet:代码测试结果
输出结果:
keySet:代码测试结果
输出结果:
三.常用的实现类Hashmap
统计字符串各个字母出现的次数
思路
- 定义一个Map来保存每个字母出现的次数,Map的键值对应分别为字母和出现次数。
- 遍历字符串中的每个字符,如果该字符不是字母,则跳过。
- 如果该字符是字母,判断是否已经出现在Map中。如果出现过,则将出现次数+1;如果没有出现过,则将该字母作为键,出现次数初始值为1存入Map中。
- 继续遍历完成后,Map中就保存了字符串中出现的每个字母和对应的出现次数。
代码测试:
输出结果:
四.泛型
泛型的特点:
- 类型安全:泛型可以在编冲期间检测类型的正确性,可以避免在运行期出现类型转换异常或者ClassCastException等类型相关错误。
- 避免代码重复:泛型可以定义一份代码用于多种类型,避免了因为类型不同而导致的代码重复问题。
- 提高代码质量:泛型可以使部分代码结构更加清晰简洁,便于代码维护和复用。
- 提高可读性:使用泛型时,代码的意图更加明确,可以增强代码的可读性和可理解性。
- 可以使用通配符:泛型支持通配符,例如使用?表示任意类型,这种特点为泛型增强了灵活性。
- 会将运行期出现的异常转换为编译期的错误
编译期:
运行期:
泛型类:
泛型方法:
五.map集合的工具类
map集合工具类的特点:
- 提供了一些常用的Map操作方法:这些工具类提供了一些常用的Map操作方法,例如排序、查找、遍历等操作,方便开发者进行Map集合的操作。
- 提供了静态方法:这些工具类中的方法通常都是静态方法,方便在不需要创建对象的情况下就能够调用。
- 提高代码重用性:这些工具类方法是通用操作,适用于不同的Map集合实例,因此能够提高代码重用性,避免重复编写代码。
- 提高代码可读性:这些工具类方法名通常语义清晰目的明确,能够提高代码可读性和可维护性。
- 简化操作:通过这些工具类的方法,能够简化Map集合的操作,使操作更加便捷和高效。
- 强类型检查:这些工具类方法通常适用于指定类型的Map集合,能够进行强类型检查,能够保证Map集合的类型安全性。
Collections:
输出结果:
Arrays:
输出结果: