[英]Return Two Arraylists or Use Two Different Methods
如果我有方法
public ArrayList<String> necessaryChanges(Set<Object> setToCheck ) {
//checks to see whether each element of set is correct by comparing it to something
// and if it needs to be changed its added to an arraylist to be returned to the user
}
我需要返回一个列表,其中包含必要的更改,这很好。
但是我也想通过更改来修改setToCheck。 我知道您不能在方法中返回两个对象。 我要问的是什么是最有效的方法。
我知道我可以在主类中创建另一个方法并调用它来更改集合,但这似乎效率很低。
有没有更好的办法做到这一点。
谢谢
如果您在necessaryChanges
的setToCheck
方法中修改setToCheck
对象,则更改也将在该方法之外可见,因为在Java中,所有内容(原始类型setToCheck
排除,但并非您的情况)均作为引用传递。
因此,基本上您不需要返回 setToCheck
对象:您可以在方法调用后仍然简单地使用它:它始终是同一对象(方法内部和外部),因此它将包含新的更改。
根据问题描述,您不需要return
两个对象。 您可以只创建并return
一个ArrayList
并就地更改setToCheck
。 由于setToCheck
是对象引用,因此对方法内部对象的任何更改都将在外部可见。
正如其他人指出的那样,Java是通过引用传递的。 因此,如果您在setToCheck中更改对象,则它将在内存中更改,因此除了更改对象引用外,无需执行任何其他操作。 例如...
public List<String> neccessaryChanges(Set<Object> setToCheck) {
List<String> changeList = new ArrayList<String>();
Iterator<Object> iterator = setToCheck.iterator();
while(iterator.hasNext()) {
Object objectToCheck = iterator.next();
if(objectMustChange) {
//once you change the object here, it will change
//in setToCheck since objectToCheck now equals something
//different and setToCheck still has reference to
//objectToCheck
objectToCheck = new String();
changeList.add((String) objectToCheck);
}
}
return changeList;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.