2016-03-16 50 views
-2

嗨我想知道是否可以將ArrayList分配給Java中的另一個ArrayList(如指針?)。將陣列列表分配給陣列列表

下面是一個例子來說明我的觀點

public class FooBar 
{ 
    boolean Foo = true; 
    public ArrayList<String> listA = new ArrayList<String>(); 
    public ArrayList<String> listB = new ArrayList<String>(); 

    public void Bar() 
    { 
     ArrayList<String> whichList; 

     if(Foo) 
      whichList = listA; 
     else 
      whichList = listB; 

     for(String words : whichList) 
     { 
      // ... 
     } 
    } 
} 

將這項工作?

+0

如果通過這將是更有教育意義的,你只要試試看看會發生什麼。您也可以使用它作爲學習如何在IDE調試器中逐步完成代碼的機會。實驗的意願是成爲軟件開發人員的基本要求。 –

+0

是@JimGarrison是對的! –

+0

請檢查http://stackoverflow.com/questions/8441664/how-do-i-copy-the-contents-of-one-arraylist-into-another –

回答

0

當然這是可能的,但你必須思考:我願意這樣做的原因是什麼?

如果您認爲通過新引用所做的更改不會影響其他列表,則表示它不正確。

如果你要處理的數據,而不必改變原來的名單,接下來將是有趣的,你

whichList = new ArrayList<>(listA); 

這將在堆上創建一個新的對象,具有完全相同的數據作爲原始列表和更改不會影響後者。


其他選項,如果你只是使用增強的for循環在你的列表,你可以做到以下幾點,而無需使用中間列表

public void Bar() { 
    for (String s : foo ? listA : listB) { 
     // doStuff 
    } 
} 

三元運算符可以幫助你評估foo的布爾值。如果這是真的,我們將循環通過listA,如果通過listB

+0

感謝增強循環是我一直在尋找 –

0

是的,它的工作。

 whichList = listA; 

該語句後,whichListlistA將指向同一個存儲單元。

你應該多做一些研究。