Collections.emptyList()vs guava的ImmutableList.of()

Cli*_*int 6 java guava

标题说明了一切.这真是一个简单的问题.只是想了解这些东西是如何真正起作用的.哪个是返回不可变空列表的最佳选择?做Collections.emptyList()或ImmutableList.of()会更好吗?还是有第三个更好的选择?

Ale*_*tin 6

我会用,Collections.emptyList()因为

1)为什么在JDK中使用第三方库时使用第三方库

2)Collections.emptyList()返回一个真正简单的私有类Collections.EMPTY_LIST(参见JDK中的Collections.java).

ImmutableList.of()返回一个Guava不可变列表,其中包含所有功能,就像真正包含对象一样,用它初始化它new Object[0].

如果您只需要空列表,那么您不需要该ImmutableList功能.

  • 您的第三点是错误的。在Guava 21中,`ImmutableList.of()`返回单例空列表,它是`new RegularImmutableList <Object>(ObjectArrays.EMPTY_ARRAY)`,因此没有分配。使用标准实现对虚拟方法分派有一个好处(有许多`ImmutableList`子类,但是在大多数地方,您只会遇到一个或两个,并且可以更好地优化单态或双态调用站点)。IIRC曾经有一个`EmptyImmutableList`类,但是出于效率原因将其删除。 (2认同)