gpt4 book ai didi

java - 这是在构建器对象中创建空集的最佳方法

转载 作者:行者123 更新时间:2023-12-01 17:46:22 25 4
gpt4 key购买 nike

一个类有一组定义为其实例变量的 String 对象。

第 1 步:我有一个方法为此类创建一个对象,将一组空字符串分配给实例变量,然后返回该对象。

接收它的方法,将其传递给另一个方法,该方法将更多字符串添加到该空集中。

现在我应该如何创建步骤 1 中的空集?

a.使用Collections.<String>emptyList()创建一个不可变的字符串集,并且当稍后在第二个方法中添加新字符串时,这不会给出错误。需要一些有关这是如何发生的基本原理的详细信息。

b. new HashSet<>()这将创建一个可变映射。

哪种方法是正确的?为什么?还有别的好办法吗?

最佳答案

从你的问题来看,好像你正在通过构建器生成一个实例,然后有人尝试修改生成的实例。

不要这样写;构建者实际上应该总是返回不可变的。如果在构建过程中没有将任何元素添加到集合中,则为 Set.of()(或者,在 JDK9 之前的 API 中为 Collections.emptySet()) 。当您尝试添加它们时,它们会抛出异常,这就是重点。

如果您的目的是创建一个可变对象,无论是否通过构建器,显然都需要一些可变集。可能是 HashSet,但请注意,对于构建者来说,HashSet 通常不是一个好主意;一般期望是维持顺序,因此您需要 LinkedHashSet 来代替,或者最好是像 guava 的 ImmutableSet 这样更优化的东西。

关于java - 这是在构建器对象中创建空集的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54724610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com