我和我的朋友们都必须解决相同的问题。我们稍后讨论了解决方案,但我们无法同意谁拥有最佳解决方案。
public static boolean doesContain1 (List<Integer> list, Integer value){
for(int i = 0; i < list.size(); i++){
if(list.get(i).equals(value)){
return true;
}
}
return false;
}
public static boolean doesContain2 (List<Integer> list, Integer value){
boolean result = false;
for(int i = 0; i < list.size(); i++){
if(list.get(i).equals(value)){
result = true;
}
}
return result;
}
public static boolean doesContain3 (List<Integer> list, Integer value){
boolean result = false;
for(int i = 0; i < list.size(); i++){
if(list.get(i).equals(value)){
result = true;
break;
}
}
return result;
}
第一个包含两个return语句,不建议使用。 第二个遍历列表的其余部分,即使找到了匹配项也浪费了时间。 第三个不推荐使用break语句。
哪个是性能最好的解决方案?
答案 0 :(得分:2)
List
接口支持contains()
方法。我想解决这个问题的最佳猜测是依靠Java的创建者如何实现它。 List
(ArrayList
,LinkedList
等不同的实现方式 的实现方式略有不同,但它们或多或少都像{{1}中那样实现}。
不建议使用2条doesContain1
语句。不建议使用return
语句。唯一不鼓励的是中间的示例,因为它在找到结果之后确实浪费了计算资源。