在Java中,我有一种方法可以修改列表的内容。更好地使用:

public List modifyList(List originalList) { // note - my real method uses generics
     // iterate over originalList and modify elements
     return originalList;
}

还是最好执行以下操作:
public void modifyList(List originalList) {
      // iterate over originalList and modify elements
      // since java objects are handled by reference, the originalList will be modified
      // even though the originalList is not explicitly returned by the method
}

注意-两种方法之间的唯一区别是返回类型(一个函数返回void,另一个函数返回List)。

最佳答案

这完全取决于您如何使用List-如果要实现某种列表,而这是List类的非静态方法,则应编写

public List modifyList() // returning list

或者
public int modifyList() // number of elements changed

如果是此类之外的方法

关于在List或其副本上执行操作:您应该考虑所需的行为和期望-最重要的是-我需要“旧的” list副本吗?深度复制列表可能会有些麻烦。浅拷贝将无法在不影响“旧”列表的情况下对列表的某些元素执行操作(即更改其属性-如果它们是对象)。

关于返回void:返回已更改列表(或至少包含已更改元素的数量)是一个好习惯,这将允许您链接方法调用,如果不需要,您始终可以忽略它。

07-27 19:58