[英]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.