假设我有一个boolean函数isCorrect(Set<Integer>)
该函数的参数由另一个函数buildSet()计算。

在时间和空间效率上哪个更好?

Set<Integer> set = buildSet();
if(isCorrect(set))
    doSomethingWith(set);


要么

if(isCorrect(buildSet()))
    doSomethingWith(buildSet());

最佳答案

第一种方法更好,但我认为这不是意见问题。在获得相同结果后,不要浪费时间调用同一函数两次。当然,我假设buildSet()没有任何必要的副作用。


  在时间和空间效率上哪个更好?


就时间而言,您要在第一个代码段中构建一次该集合,而在第二个代码段中构建两次,因此大概第二个将花费更长的时间。在空间方面,可能不会有任何区别。但是,您似乎在第二个片段中实例化了两个对象,而在第一个片段中实例化了一个对象(再次,我不确定这一点,因为我不知道buildSet()是如何实现的)。如果是这种情况,并且您保留了这两个对象,那么第二个代码段也将使用两倍的空间。

09-06 23:33