java - 将单个元素添加到不可变集合的有效且优雅的方法是什么?

标签 java guava

我有一个不可变的集合(转换为 Set<Integer>),它可能包含许多元素。我需要一个包含该集合中的元素和一个附加元素的集合。我有一些笨拙的代码来复制集合,然后附加元素,但我正在寻找使事情尽可能高效的正确方法。

我有 Guava 可用,但我不需要使用它。

最佳答案

不确定性能,但您可以使用 Guava 的 ImmutableSet.Builder :

import com.google.common.collect.ImmutableSet

// ...
Set<Integer> newSet = new ImmutableSet.Builder<Integer>()
                                .addAll(oldSet)
                                .add(3)
                                .build();

当然你也可以为自己写一个辅助方法:

public static <T> Set<T> setWith(Set<T> old, T item) {
  return new ImmutableSet.Builder<T>().addAll(old).add(item).build();
}

// ...
Set<Integer> newSet = setWith(oldSet, 3);

关于java - 将单个元素添加到不可变集合的有效且优雅的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10354286/

相关文章:

java - java 按升序对矩阵的列进行排序

java - Guava 和 SQL : cast int to Ints

java - Gradle jar 不包含 Guava 前提条件

Java Guava : Iterating and removing keys of Multimap

java - 将一个Map分配给ImmutableMap后,如何停止或限制重新分配另一个Map

java - 如何在 Guava Optional 中保存空值

java - OSGi list 为空

java - 创建变量来保存对象有时是多余的吗?

java - 按列名获取数据 apache poi excel

java - 如何通过单击暂停音频文件并开始新的音频文件?