簡體   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