【问题标题】:Returning an element from a list in java从java中的列表中返回一个元素
【发布时间】:2016-09-26 16:02:23
【问题描述】:

您能告诉我使用getTheLastElement2() 代替getTheLastElement() 有哪些优势(如果有优势的话)?我的意思是为什么要创建引用 obj 时更容易返回结果?

import java.util.ArrayList;
        import java.util.List;

public class Test {
    List list;

    Test(ArrayList list){
        this.list = list;
    }

    public Object getTheLastElement(){
        if (list.isEmpty())
            return null;
        else
            return list.get(list.size()-1);
    }

    public Object getTheLastElement2(){
        Object obj;
        if (list.isEmpty())
            obj = null;
        else
            obj = list.get(list.size()-1);
        return obj;
    }
}

【问题讨论】:

  • 这些都不是。
  • 您必须返回 size - 1th 元素,而不仅仅是 size
  • 您可能还想看看stackoverflow.com/questions/36707/…,它讨论了在函数中使用单个退出点与多个退出点的优缺点。在您的代码示例中,我建议getTheLastElement() 更具可读性,如果没有else 语句,则更是如此。

标签: java list return


【解决方案1】:

不,没有优势。另外,你应该返回list.get(list.size()-1)

【讨论】:

    【解决方案2】:

    这两种实现之间没有区别:obj 引用可能会被优化掉。

    你在调试代码时确实有一点优势,因为你可以在getTheLastElement2return语句上设置断点,并且知道它总是会被命中。这与 getTheLastElement 形成对比,您需要两个断点来检查返回值。

    请注意,第一个示例中的else 是多余的:

    public Object getTheLastElement(){
        if (list.isEmpty()) {
            return null;
        }
        return list.get(list.size()-1);
    }
    

    您可以进一步将其缩小为一个三元表达式:

    public Object getTheLastElement(){
        return !list.isEmpty() ? list.get(list.size()-1) : null;
    }
    

    【讨论】:

    • 否则会影响执行时间吗?
    • @rEx 不,它是多余的,将被编译器消除。就执行速度而言,这些都是相等的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 2013-11-26
    • 2013-04-30
    • 2020-08-16
    • 1970-01-01
    • 2021-07-17
    相关资源
    最近更新 更多