【问题标题】:Assign arraylist to arraylist将arraylist分配给arraylist
【发布时间】:2016-07-01 21:07:44
【问题描述】:

您好,我想知道是否可以在 Java 中将 ArrayList 分配给另一个 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 )
        {
            // ...
        }   
    }   
}

这行得通吗?

【问题讨论】:

  • 尝试一下看看会发生什么,对您来说会更有教育意义。您也可以借此机会学习如何在 IDE 调试器中单步执行代码。愿意尝试是成为软件开发人员的基本要求。
  • 是的@JimGarrison 是对的!

标签: java


【解决方案1】:

当然有可能,但你得想想:我愿意这样做的原因是什么?

如果您认为通过新引用所做的更改不会影响其他列表,那是不正确的。

如果你想在不改变原始列表的情况下操作数据,下一个对你来说会很有趣

whichList = new ArrayList<>(listA);

这将在堆上创建一个新对象,其数据与原始列表中的数据完全相同,并且更改不会影响后者。


其他选项,如果您只是在增强的 for 循环中使用列表,则可以执行以下操作,而无需使用中间列表

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

三元运算符可帮助您计算 foo 的布尔值。如果为真,我们将循环通过listA,如果为假,则通过listB

【讨论】:

    【解决方案2】:

    是的,它有效。

         whichList = listA;
    

    在此语句之后,whichListlistA 将指向同一个内存单元。

    您应该进行更多研究。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-05
      • 1970-01-01
      • 2016-01-08
      • 2015-08-11
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      相关资源
      最近更新 更多