代码之家  ›  专栏  ›  技术社区  ›  DontDivideByZero radai

Guava ImmutableSet:建设者vs?

  •  10
  • DontDivideByZero radai  · 技术社区  · 11 年前

    这个 Javadoc 对于 com.google.common.collect.ImmutableSet 建议有两种方法来创建 ImmutableSet<E> 来自类型的元素 E (例如。 E e1 E e2 )尚未在集合中(即忽略 copyOf 从现有集合创建的方法):

    1. “of”方法:

      ImmutableSet<E> set = ImmutableSet.of(e1, e2);
      
    2. 建设者 :

      ImmutableSet<E> set = new ImmutableSet.Builder<E>().add(e1).add(e2).build();
      

    两种方法都使用 ImmutableSet.Builder#construct 最后,但是 我应该选哪一个?

    1 回复  |  直到 11 年前
        1
  •  16
  •   Rohit Jain    11 年前

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

    但是,如果您从不同的地方获取元素,这意味着您的对象状态不是在一个地方完成的,而是在流上累积数据之后完成的。那你就得去 Builder 方法创建 建设者 ,并在获得时继续添加元素。然后当你完成后,打电话给 build() 得到 不可变集 .