2016-03-16 53 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将指向同一个存储单元。

你应该多做一些研究。