向HashSet中添加数组元素的高效方法对比
两种HashSet添加元素方式的效率对比
你的判断完全正确,Collections.addAll(myHashSet, myString.split(":"))确实比myHashSet.addAll(List.of(myString.split(":")))更高效,具体差异如下:
- 两者的初始开销一致:
myString.split(":")都会生成一个String[]数组,这部分的执行成本是相同的。 - 第一种方式的执行链路:
Collections.addAll会直接遍历上述数组,逐个调用HashSet的add方法,没有任何额外的中间对象创建,操作逻辑最直接。 - 第二种方式的额外开销:
List.of(myString.split(":"))会创建一个不可变的包装列表对象(哪怕是轻量级实现,也确实是额外生成的对象),之后HashSet.addAll需要遍历这个列表再完成元素添加,多了一层中间对象的创建和间接遍历的成本。
虽然JVM可能会对第二种方式做部分优化,但从代码的本质执行逻辑来看,第一种方式的开销确实更低,效率更高。
内容的提问来源于stack exchange,提问作者Rohit Singhal
相关产品推荐
相关产品推荐

