首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >返回两个数组列表或使用两个不同的方法

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

Stack Overflow用户
提问于 2014-08-14 11:28:27
回答 3查看 1K关注 0票数 1

如果我有办法

代码语言:javascript
运行
复制
 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。我知道你不能在一个方法中返回两个对象。我要问的是,怎样才是最有效的方法。

我知道我可以在主类中创建另一个方法,并调用它来更改集合,但它看起来确实效率低下。

有没有更好的方法。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-14 11:30:46

如果在setToCheck方法中修改necessaryChanges对象,则该方法之外的更改也是可见的,因为在Java (不包括原语类型,但不是您的情况)是作为引用传递的。

因此,基本上,您不需要返回-- setToCheck对象:您仍然可以在方法调用之后使用它:它始终是同一个对象(在方法内部和外部),因此它将包含新的更改。

票数 5
EN

Stack Overflow用户

发布于 2014-08-14 11:30:45

根据您的问题描述,您不需要return两个对象。您只需创建和return一个ArrayList,并对setToCheck进行就地修改.由于setToCheck是一个对象引用,所以对方法中的对象所做的任何更改都将在外部可见。

票数 1
EN

Stack Overflow用户

发布于 2014-08-14 11:58:05

正如其他人所指出的,Java是通过引用传递的。因此,如果您在setToCheck中更改了一个对象,那么它将在内存中被更改,因此,除了更改对象引用之外,不需要做任何其他事情。比如说..。

代码语言:javascript
运行
复制
    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;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25306967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档