- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我读了here关于使用 Guava 中的 ImmutableSet
的一个很好的例子。为了完整起见,在此报告该示例:
public static final ImmutableSet<String> COLOR_NAMES = ImmutableSet.of(
"red",
"orange",
"yellow",
"green",
"blue",
"purple");
class Foo {
Set<Bar> bars;
Foo(Set<Bar> bars) {
this.bars = ImmutableSet.copyOf(bars); // defensive copy!
}
}
问题是,我可以通过使用 Java 枚举获得相同的结果吗?
附言:This question给我的脑子增添了更多的困惑!
最佳答案
Can I obtain the same result by using a Java enum?
是的,你可以。你试过了吗?
仅供引用 还有 ImmutableSet
的特殊版本,它保存枚举的常量 - Sets.immutableEnumSet
(它在内部使用 EnumSet
)。
一些示例(解释 Wiki 示例):
public class Test {
enum Color {
RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE;
}
static class Baz {
ImmutableSet<Color> colors;
Baz(Set<Color> colors) {
this.colors = Sets.immutableEnumSet(colors); // preserves enum constants
// order, not insertion order!
}
}
public static void main(String[] args) {
ImmutableSet<Color> colorsInInsertionOrder = ImmutableSet.of(
Color.GREEN, Color.YELLOW, Color.RED);
System.out.println(colorsInInsertionOrder); // [GREEN, YELLOW, RED]
Baz baz = new Baz(colorsInInsertionOrder);
System.out.println(baz.colors); // [RED, YELLOW, GREEN]
}
}
编辑(在 OP 评论之后):
你想要 ImmutableSet 中的所有枚举常量吗?只是做:
Sets.immutableEnumSet(EnumSet.allOf(Color.class));
关于java - 来自 Guava 或 Java 枚举的 ImmutableSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15952128/
POM.xml : 4.0.0 **** **** 1.0 com.web web war
我想知道这个调用是否是线程安全的。例如,如果我有一组 s: Set s = new HashSet<>(); 还有两个线程A和B,线程A修改集合: for (int i = 0; i newS =
我有一个 ImmutableSet 的实例。现在我需要包含该集合中除一个之外的所有元素的新实例。就像是 ImmutableSet numbers = ImmutableSet.of(2, 3, 4,
我习惯了 C# 我们有 IEnumerable.SelectMany但发现自己使用 Google 的 Guava 库涉猎了一些 Java 代码。是否有与 Guava 中的 SelectMany 等效的
Guava 的ImmutableSet在我关于 contains 的基准测试中似乎表现很差.对于某些尺寸,它甚至比 List 慢得多。 : size benchmark
我有以下设置(即 Entity 是一个 JPA2 实体,entities 是一个集合) class Entity { Set entities = new HashSet<>(); p
elastic-search 项目中的 ImmutableSettings 类已经不存在了。我发现类被删除了。 “org.elasticsearch.common.settings.Immutable
我有一个类 class Receipt { private Set orders; public Receipt(Set orders) { this.
Javadoc对于 com.google.common.collect.ImmutableSet建议有两种方法可以创建 ImmutableSet 的实例来自 E 类型的元素(例如 E e1 和 E e
我希望避免出现多个 if-else 条件。下面的代码有没有更简洁的写法? private Set getValues(Optional one, Optional two) { if (one
这是我希望通过的单元测试: import static org.junit.Assert.assertEquals; import org.jmock.Expectations; import org
我读了here关于使用 Guava 中的 ImmutableSet 的一个很好的例子。为了完整起见,在此报告该示例: public static final ImmutableSet COLOR_NA
具有此端点定义: @RequestMapping(value = "/foo_resource", method = RequestMethod.GET) public FooResponse ret
elastic-search 项目中的 ImmutableSettings 类已经不存在了。我发现类被删除了。 我在 ImmutableSetting 类中使用函数 settingsBuilder()
我从 1.7 升级了我的 Google App Engine 应用程序。到 1.8。 + Java 7,我将所有 API 库升级为最新版本。我在 GAE 容器中进行应用程序初始化期间遇到奇怪的异常:
ImmutableSet 的 JavaDoc 说: Unlike Collections.unmodifiableSet, which is a view of a separate collecti
你好, 我有一个包含一些数据的集合: Set aItems = aItem .getItems( ); 因为要排序,所以先转成list,排序后,才转回set:
假设您要构建一个 ImmutableSet/List/Map 对象的副本,但要过滤掉一些原始条目。一种实现方法如下: ImmutableList.copyOf(Iterables.filter(myO
我需要确保某个 Set我创建的代码没有在其他地方修改。当然,我最终使用了 Guava 的 ImmutableSet为此。 这个不可变集非常大(大约 59K 个字符串),我必须执行 Set#contai
我的代码中有一个错误,我正在尝试修改一个实际上是从客户端程序/程序员传入的 Guava ImmutableList 的列表。 最好的测试方法是什么,而不是在 .add() 失败时等待异常? 最佳答案
我是一名优秀的程序员,十分优秀!