Map的好处和缺点

文章讨论了在查找效率上,list与map的区别。list查找需要线性时间复杂度O(N),而map使用哈希映射达到O(1)。然而,map在处理碰撞时可能退化为链表,极端情况下甚至需要红黑树保持平衡。尽管Map在INSERT、DELETE、SEARCH操作上更优,但其他操作可能变得更复杂,此时list可能是更好的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们用list查找arr{2,5,8,4,6,9,3,1,17,10}时,假如我们需要7这个数字它是一个个去查找的,要查9次,它的时间复杂度是O(N)。而我们用map查找时17%10-->arr[7]它的时间复杂度是O(1)。

当用map时会发生碰撞

当碰撞发生多次后会退化成链表的形式。

当链表过长时会树化,当形成"树"的时候,它又会发生碰撞变成链表,这个时候我们就要用红黑树来代替,来保持平衡。

Map的优化

以图书馆找相同的书为例子

用双重for循环

 用Map

 Map要比双重for循环要快很多。

Map也存在着缺点:

 像INSERT、DELETE、SEARCH在Map中是可以的,其它的方式也可以通过其它方式实现,但是会变的更加复杂,这个时候就可以考虑用list。

 

 

MapStructBeanUtils是Java中常用的对象映射工具,它们都可以用于将一个对象的值映射到另一个对象上。以下是它们的优缺点MapStruct的优点: 1. 性能优秀:MapStruct在编译期间生成映射代码,相比运行时的反射机制,具有更好的性能表现。 2. 类型安全:MapStruct在编译期间进行类型检查,避免了在运行时可能出现的类型转换错误。 3. 易于使用:MapStruct通过注解配置简单明了,生成的映射代码也易于理解维护。 MapStruct的缺点: 1. 学习曲线较陡:对于初学者来说,需要一定时间去了解掌握MapStruct的使用方式配置方式。 2. 配置复杂:对于复杂的映射场景,可能需要编写自定义的转换器或者使用复杂的配置方式。 BeanUtils的优点: 1. 简单易用:BeanUtils提供了简单的API,易于学习使用。 2. 动态性:BeanUtils使用反射机制,在运行时可以动态地进行属性复制。 BeanUtils的缺点: 1. 性能较差:由于使用了反射机制,BeanUtils在属性复制过程中性能相对较低,特别是处理大量对象时会有明显的性能损耗。 2. 不支持类型安全:BeanUtils在属性复制时没有类型检查,容易出现类型转换错误。 综上所述,MapStruct在性能类型安全方面具有优势,适用于需要高性能类型安全的场景。而BeanUtils则更适用于简单的属性复制场景,对于性能要求不高且不涉及复杂类型转换的情况下使用较为方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值