番石榴ImmutableSet:生成器与?

时间:2015-03-11 17:36:14

标签: java collections set guava immutability

com.google.common.collect.ImmutableSet的{​​{3}}表明有两种方法可以从ImmutableSet<E>类型的元素创建E的实例(例如E e1和{{1} }})已经不在集合中(即忽略从现有集合创建的E e2方法):

  1. &#34;&#34;方法

    copyOf
  2. 生成器

    ImmutableSet<E> set = ImmutableSet.of(e1, e2);
    
  3. 两种方法最终都使用ImmutableSet<E> set = new ImmutableSet.Builder<E>().add(e1).add(e2).build(); ,但我应该选择哪一种?

1 个答案:

答案 0 :(得分:14)

这完全取决于你将如何构建ImmutableSet。如果您在一个地方提供了所有可用元素,请直接使用of(E...)方法。那肯定会更短。

但是如果以某种方式,你从不同的地方获取元素,那就意味着,你的对象状态不会在一个地方完成,而是在流量上累积数据之后。然后你必须采用Builder方式。创建一个Builder,并在收到时继续添加元素。然后,当您完成后,只需致电build()即可获得ImmutableSet