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