繁体   English   中英

返回两个数组列表或使用两种不同的方法

[英]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。 我知道您不能在方法中返回两个对象。 我要问的是什么是最有效的方法。

我知道我可以在主类中创建另一个方法并调用它来更改集合,但这似乎效率很低。

有没有更好的办法做到这一点。

谢谢

如果您在necessaryChangessetToCheck方法中修改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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM