您认为编写此算法的最干净方法是什么?

时间:2019-10-18 20:35:11

标签: java algorithm

我和我的朋友们都必须解决相同的问题。我们稍后讨论了解决方案,但我们无法同意谁拥有最佳解决方案。

 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语句。

哪个是性能最好的解决方案?

1 个答案:

答案 0 :(得分:2)

List接口支持contains()方法。我想解决这个问题的最佳猜测是依靠Java的创建者如何实现它。 ListArrayListLinkedList等不同的实现方式 的实现方式略有不同,但它们或多或少都像{{1}中那样实现}。

不建议使用2条doesContain1语句。不建议使用return语句。唯一不鼓励的是中间的示例,因为它在找到结果之后确实浪费了计算资源。

相关问题