数据结构一个Java集合最多可容纳2个对象
我正在编写一个返回Set<String>
的方法。该集合可以包含0、1或2个对象。字符串键也很小(最多8个字符)。然后,该集合在一个紧密循环中使用,多次迭代调用contains()
对于0个对象,我将返回Collections.emptySet()
对于1对象,我将返回Collections.singleton()
对于2个对象(可能的最大数量),一个HashSet
似乎是杀伤力过大。难道没有更好的结构吗?也许TreeSet
稍微好一点?不幸的是,我仍然在使用Java7:-(因此不能使用像Set.of()
这样的现代工具)
由2个字符串组成的数组可能会提供最佳性能,但这不是一组。我希望代码是自文档化的,所以我真的希望返回一个集合,因为这是所需的逻辑接口
# 1 楼答案
我可能会为此简化它。也许是这样的:
# 2 楼答案
你可以通过
super.add(E element)
初始化类时添加值# 3 楼答案
只需用
AbstractSet
包装一个数组。假设您想要一个不可修改的集合,则只需实现2种方法:如果需要,可以在字段中存储
Arrays.asList(strings)
而不是String[]
。如果希望将数组限制为该长度,还可以提供0、1和2-arg构造函数您还可以覆盖
contains
:如果您不想创建一个列表来创建一个迭代器,您可以简单地将其实现为一个内部类: