我需要快速检索 - 当我询问Char是否存在时。 增加时间几乎不重要。
答案 0 :(得分:1)
正如我们所说的Collection
:它取决于集合类型。 HashSet
为contains
操作提供了最佳性能,即O(1)。
Set<Character> chars = new HashSet<Character>();
chars.add(new Character('A'));
chars.add(new Character('B'));
chars.add(new Character('C'));
if (chars.contains('A'))
System.out.println("Lightning fast answer: TRUE");
答案 1 :(得分:1)
char
是无符号的16位值,只能使用65,536个值。既然你谈到存在,我就假设你有一个Set
而不是一般的Collection
。使用BitSet
来表示此集合;添加并检查char
是否存在,就好像它是一个整数值(因为它是)。这是我能想象到的最快,肯定会比普通HashSet of
角色更快,而且只需要8K的内存。
答案 2 :(得分:1)
如果不处理整个unicode字符范围,则一个简单的(bit / bool)数组应该相当快。与哈希相比,您也不必担心冲突。
答案 3 :(得分:0)
您的字母大小是多少? 如果它很小并且所有字符都是ASCII字符,则可以使用数组。
boolean[] chars;
chars['A'] = true;