在Java中创建类时,我经常发现自己创建的实例级集合非常小--在集合中少于10项。但我事先不知道项目的数量,所以我通常选择动态集合(ArrayList、Vector等)。
class Foo
{
ArrayList<Bar> bars = new ArrayList<Bar>(10);
}我的一部分一直在抱怨,对于这么小的东西,使用复杂的动态集合是浪费的。有没有更好的方法来实现这样的东西呢?或者这是常态吗?
请注意,我没有受到任何(明显的)性能损失或类似的影响。这只是我在想,是否有更好的方法来做事情。
发布于 2008-09-11 17:49:00
Java语言中的ArrayList类只有两个数据成员,一个是对Object[]数组的引用,另一个是大小-如果不使用ArrayList,无论如何都需要这个成员。因此,不使用ArrayList的唯一好处是节省一个对象分配,这不太可能是一个大问题。
如果您每秒都在创建和处理容器类(以及ArrayList实例)的许多实例,那么您可能会遇到一点垃圾收集问题--但如果发生这种情况,就需要担心。垃圾收集通常是您最不担心的问题。
发布于 2008-09-11 18:03:40
为了简单起见,我认为这几乎不是问题。您的实现足够灵活,如果将来需求发生变化,您不会被迫进行重构。此外,考虑到您的小数据集和Java Collection API的高质量,向混合解决方案的代码中添加更多逻辑是不值得的。
发布于 2008-09-11 18:57:58
Google Collections具有针对不可变/少量元素进行优化的集合。以Lists.asList接口为例。
https://stackoverflow.com/questions/57145
复制相似问题