将HashSet <String>与String.equals(...)进行比较

Gan*_*alf 2 java string optimization

如果我有一个String我要在自由格式字段中检查的设定数量(计算机生成,那么可能每秒很多)这将是一个更快的实现?

private static HashSet<String> values = new HashSet<String>();
static {
   ... add 5 Strings to the Set
}
public void someMethod() {
   if (values.contains(enteredValue))
   ...
}
Run Code Online (Sandbox Code Playgroud)

或者用5 String.equals|| 做if ?

这对我来说似乎不费吹灰之力,但也许我错了.一个而不是另一个的任何缺点?

jjn*_*guy 5

我相信HashSet会更快,因为它会将你的字符串哈希一次,然后进行5次整数比较.进行5次String比较应该更快.

话虽这么说,我建议你只选择一种方式并尝试一下.如果它的执行速度不够快,那就担心更多地优化它.

  • 你仍然需要计算哈希值 - 生成哈希值5次然后比较整数并不比直接比较更快. (3认同)