如果我要创建一个Java Collection,并且只想用元素填充它,然后遍历它(事先不知道必要的大小),即我需要的只是Collection< E> .add(E)和Collection< E> .iterator(),我应该选择哪个具体类?例如,使用Set而不是List是否有任何优势?哪一个开销最小?
解决方法:
which concrete class should I choose?
我可能只是使用ArrayList或LinkedList.两者都支持add和iterator方法,而且它们中的更直接有任何可观的开销.
Is there any advantage to using a Set rather than a List, for example?
不,我不会这么说. (除非你依赖于元素的顺序,在这种情况下你必须使用List,或者想要禁止重复,在这种情况下你应该使用Set.)
(我没有看到任何Set实现如何击败add / iterator方法的列表实现,所以即使我不关心顺序,我也可能会使用List.)
Which one would have the least overhead?
这听起来像是微基准测试,但是如果我被迫猜测,我会说ArrayList(或者说在ArrayLists需要经常重新分配内存的情况下的LinkedList
标签:java,optimization,collections
来源: https://codeday.me/bug/20190711/1435738.html