乘以 if 语句与 collection.contains

mik*_*woe 3 java collections if-statement

哪种方式更好?

if ("Pablo".equals(name) || "Marko".equals(name) || .. ); 
Run Code Online (Sandbox Code Playgroud)

或者

if (Sets.newHashSet("Pablo", "Marko", ..).contains(name));
Run Code Online (Sandbox Code Playgroud)

对内存使用、性能、可读性感兴趣

Era*_*ran 5

if 语句将花费线性时间 (O(n)),因为它有n在最坏情况下进行评估的条件。

Set.contains变体将花费线性时间来构造Set(添加n元素),但只需要恒定时间来搜索Set特定值。

因此,如果多次运行此条件(对于同一组值),则创建一次Set并多次重复使用它比多次运行 if 语句更有效。