番石榴ImmutableSet:生成器与?

Don*_*ero 8 java collections set immutability guava

Javadoc中com.google.common.collect.ImmutableSet提示,有两种方法来创建的实例ImmutableSet<E>,从类型的元素E(例如,E e1E e2已经不是一个集合中)(即忽略copyOf从现有集合创建方法):

  1. "of"方法:

    ImmutableSet<E> set = ImmutableSet.of(e1, e2);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 生成器:

    ImmutableSet<E> set = new ImmutableSet.Builder<E>().add(e1).add(e2).build();
    
    Run Code Online (Sandbox Code Playgroud)

两种方法ImmutableSet.Builder#construct最终都使用,但我更喜欢哪一种?

Roh*_*ain 14

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

但是,如果不知何故,你从不同的地方获取元素,这意味着,你的对象状态不会在一个地方完成,而是在流量上积累数据之后.那你就得走了Builder.创建一个Builder,并在您获得时继续添加元素.然后当你完成后,只需打电话build()来获取ImmutableSet.