2014-02-17 123 views
-1

我正在寻找一个简单的设置在Java中只有提供以下功能。简单设置只有“包含”方法

Set.add(String s); 
Set.contains(String s); 

我不需要检索该集合的任何元素。我想要做的就是检查一个字符串是否包含在其中。 Java中有这样的数据结构吗?

编辑:我知道我可以使用像HashSet等集合实现...但我想要一个简单的数据结构只有上面列出的两种方法。

编辑2:我在一个内存受限制的系统,这就是为什么。

+0

HashSet 似乎合适。 –

+2

你想要一套专门不支持任何其他操作的套件吗?这似乎是一个奇怪的事情想要。 – user2357112

+0

HashSet不允许多次存储相同的字符串。 – Bhoot

回答

1

使用HashSet<String>,既具有add()contains()功能,但它不会允许重复

+0

重点是*只*,我不想要一个完整的集合实现。见评论问题。 – Roland

+1

@Roland:放弃其他方法不会让你更轻量化。你在这里的目标是什么?你是否在内存受限的系统上? – user2357112

+0

是的,内存受限系统。 – Roland

0

可以extendsHashSet类和改变其行为。

public class CustomHashSet<String> extends HashSet<String> { 

    @Override 
    public boolean add(String e) { 
     return false; 
    } 
} 
+0

我不会推荐这样做,你违反了LSP。只需推出自己的界面,并通过Set – tddmonkey

0

如果你只能在本地使用此功能,只需用HashSet,坚持非写 - 如果需要此功能的应用范围,写一个HashSet支持一个自己的类。

0

所以,如果你想要一套仅提供addcontains方法,那么......定义它!

interface MinimalisticSet<T> { 
    void add(T element); 
    boolean contains(Object object); 
} 

一个支持java.util.Set的实现将会非常简单。

+0

支持实现会更好。关键是节省内存。 – Roland

+0

然后你必须更清楚地说明你的要求。例如,您可以使用支持数组来实现此接口,这将涉及最小的内存开销。但是,添加/包含不再是O(1),而是O(n) – Marco13

+0

不需要。所需的只是一个简单的哈希表,但不存储该对象。只要检查散列是否已经存在。 – Roland

相关问题