我正在编写一个程序,它将为数据结构添加越来越多的数字或唯一的字符串.一旦完成,我后来需要不断检查其中是否存在字符串.
如果我使用ArrayList,我相信检查某些指定字符串的存在会遍历所有项目,直到找到匹配的字符串(或到达结尾并返回false).
但是,使用HashMap我知道在常量时间我可以简单地将键用作String并返回任何非null对象,从而使此操作更快.但是,我并不热衷于填充HashMap,其值完全是任意的.是否存在使用散列函数的现成数据结构,但不需要放置值?
解决方法
If I were to use an ArrayList I believe checking for the existence of some specified string would iterate through all items until a matching string is found
正确,检查项目列表是列表条目数的线性.
However,I am not keen on filling a HashMap where the value is completely arbitrary
您不必:Java提供了一个HashSet<T>
类,它非常类似于没有值部分的HashMap.
您可以将所有字符串放在那里,然后在恒定时间内检查是否存在其他字符串;
Set<String> knownStrings = new HashSet<String>(); ... // Fill the set with strings if (knownString.contains(myString)) { ... }