当前位置: 首页 > 面试题库 >

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

魏晨
2023-03-14
问题内容

我有一个不可变的集合(作为广播Set<Integer>),其中可能包含许多元素。我需要一个Collection,其中包含该集合中的元素以及一个其他元素。我有适当的代码来复制集合,然后追加元素,但是我正在寻找使事情尽可能高效的正确方法。

我有可用的番石榴,但我不需要使用它。


问题答案:

不确定性能,但是您可以使用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);


 类似资料:
  • 问题内容: 到目前为止,这是我得到的: 这让我既震惊又浪费。如果存在firstChoice,则我将不必要地计算secondChoice。 还有一个更有效的版本: 在这里,如果不复制映射器或声明另一个局部变量,就无法将某些映射函数链接到最后。所有这些使代码比要解决的实际问题更加复杂。 我宁愿这样写: 但是可选:::显然不存在。怎么办? 问题答案: 试试这个: map方法为您提供了一个。然后,该方法将

  • 我必须编写一些代码,将Java8流的内容多次添加到列表中,我很难找到最好的方法。根据我在SO上读到的内容(主要是这个问题:如何将Java8流的元素添加到现有列表中)和其他地方,我将其缩小到以下选项: PS:在我的示例代码中,我使用作为需要在流上执行的任何操作的占位符

  • 问题内容: 我有一个numpy数组,其中包含: 我想创建一个包含以下内容的数组: 也就是说,我想将第一个元素添加到数组的末尾。 我尝试了明显的方法: 但我说错了 我不明白这一点-数组都是一维数组。 问题答案: 创建一个新数组,该数组可以是带有附加元素的旧数组。 我认为使用适当的方法添加元素更为正常:

  • zadd key score member 添加元素到集合,元素在集合中存在则更新对应score。

  • 问题内容: 假设您有一个存储有序树层次结构的平面表: 这是一个图,我们在这里。根节点0是虚构的。 您将使用哪种简约方法将其作为正确排序,正确缩进的树输出到HTML(就此而言,还是文本)? 进一步假设您只有基本的数据结构(数组和哈希图),没有带有父/子引用的奇特对象,没有ORM,没有框架,只有两只手。该表表示为结果集,可以随机访问。 可以使用伪代码或简单的英语,这纯粹是一个概念性问题。 额外的问题:

  • 本文向大家介绍浅谈Java中几个常用集合添加元素的效率,包括了浅谈Java中几个常用集合添加元素的效率的使用技巧和注意事项,需要的朋友参考一下 初始化需要进行比较的集合,统一增加10万个元素,获取整个过程的执行时间。 1、List集合增加元素 程序输出: List添加10万个元素程序运行时间为:8ms 2、Set集合增加元素 程序输出: Set添加10万个元素程序运行时间为:17ms 3、Link