在实际项目开发中,需要经常使用集合,比如:ArrayList、HashMap 等。
但有个问题:你在初始化集合时指定了大小的吗?
反例
:
1 | public class Test2 { |
执行时间:
1 | 12 |
如果在初始化集合时指定了大小。
正例
:
1 | public class Test2 { |
执行时间:
1 | 6 |
我们惊奇的发现,在创建集合时指定了大小,比没有指定大小,添加 10 万个元素的效率提升了一倍。
如果你看过 ArrayList
源码,你就会发现它的默认大小是 10
,如果添加元素超过了一定的阀值,会按 1.5
倍的大小扩容。
你想想,如果装 10 万条数据,需要扩容多少次呀?而每次扩容都需要不停的复制元素,从老集合复制到新集合中,需要浪费多少时间呀。