将if语句与collection.contains相乘

时间:2018-03-26 11:24:24

标签: java if-statement collections

哪种方式更好?

if ("Pablo".equals(name) || "Marko".equals(name) || .. ); 

if (Sets.newHashSet("Pablo", "Marko", ..).contains(name));

关于使用内存,性能,可读性的兴趣

1 个答案:

答案 0 :(得分:4)

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

Set.contains变体需要线性时间来构建Set(添加n元素),但只需要一段时间来搜索Set特定值。< / p>

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