如果我有办法
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。我知道你不能在一个方法中返回两个对象。我要问的是,怎样才是最有效的方法。
我知道我可以在主类中创建另一个方法,并调用它来更改集合,但它看起来确实效率低下。
有没有更好的方法。
谢谢
发布于 2014-08-14 11:30:46
如果在setToCheck方法中修改necessaryChanges对象,则该方法之外的更改也是可见的,因为在Java (不包括原语类型,但不是您的情况)是作为引用传递的。
因此,基本上,您不需要返回-- setToCheck对象:您仍然可以在方法调用之后使用它:它始终是同一个对象(在方法内部和外部),因此它将包含新的更改。
发布于 2014-08-14 11:30:45
根据您的问题描述,您不需要return两个对象。您只需创建和return一个ArrayList,并对setToCheck进行就地修改.由于setToCheck是一个对象引用,所以对方法中的对象所做的任何更改都将在外部可见。
发布于 2014-08-14 11:58:05
正如其他人所指出的,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;
}https://stackoverflow.com/questions/25306967
复制相似问题