Kei*_*son 5 java collections optimization
如果我要创建一个Java Collection中,只想与元素来填充它,然后遍历它(不知道所需的大小事前),即所有我需要的是Collection<E>.add(E)
和Collection<E>.iterator()
,其具体类,我应该选择?例如,使用a Set
而不是a 是否有任何优势List
?哪一个开销最小?
aio*_*obe 22
我应该选择哪个具体课程?
我可能会选择一个ArrayList
或一个LinkedList
.两者都支持add
和iterator
方法,并且它们的更新有任何可观的开销.
例如,使用Set而不是List是否有任何优势?
不,我不会这么说.(除非你依赖于元素的顺序,在这种情况下你必须使用List,或者想要禁止重复,在这种情况下你应该使用Set.)
(我没有看到任何Set实现如何击败add/iterator方法的列表实现,所以即使我不关心顺序,我也可能会使用List.)
哪一个开销最小?
这听起来像微基准测试,但是如果我被迫猜测,我会说ArrayList(或者说在链接的情况下,在ArrayLists需要经常重新分配内存的情况下使用LinkedList :-)