【发布时间】:2016-05-05 12:01:16
【问题描述】:
在我正在编写的程序中,我必须检查一个 List(实际上我可以根据需要替换 Collection 的类型)是否包含特定的 String。
这是最快的方法吗?
private boolean containsItem(List<String> list, String path) {
for (String s : list) {
if (s.equals(path)) {
return true;
}
}
return false;
}
我只要求性能,因为此操作可能会连续发生几千次。
【问题讨论】:
-
使用 HashSet 来提高性能,而不是你的方法,使用
set.contains(path)。 -
更不用说:list.contains(path) 会比这段代码更适合。
-
并包含设置方法。
-
@Eran:嗯,
HashSet将提高 检索 性能。但自然会在插入性能方面付出代价。 -
@T.J.Crowder 好吧,鉴于 OP 说他想搜索
a couple of thousand times in a row,我认为将数据存储在HashSet中会更有效。当然,如果插入比检索更频繁,那可能不是真的。
标签: java performance iteration