【问题标题】:Data Structure to ArrayListArrayList 的数据结构
【发布时间】:2013-07-30 13:55:47
【问题描述】:

我想将Data Structure 存储在ArrayList 中。 我的数据结构如下:

public class Node{
     private double weight;
     private int floor;
     private  List<Integer> nodelist= new  ArrayList<Integer>();
}

我想通过以下方式存储到这个数据结构中:因此,我已经在一个 ArrayList 之前创建了我存储节点列表的位置,然后我只想将这个列表存储在 ArrayList 中,就像我在下一行:

ArrayList<Node> nl = new ArrayList<Node>();
nl.add(new Node(0,1, xy.getnodelist());

现在的问题如下:如果我这样做,我的ArrayList nl 中的ArrayList 总是相同的,我不知道我的错误在哪里。 第一次我只用ArrayList尝试它,但后来我切换到List,因为我在Stackoverflow上读到这应该用于将ArrayLists存储在ArrayLists中。 但这对我没有帮助。

【问题讨论】:

  • 变量xy在哪里定义?
  • 你能说清楚一点吗?
  • 你也可以发布你用来填充节点列表的构造函数吗?
  • 函数 getnodelist() 正在返回一个 ArrayList。所以我认为如何定义变量 xy 并不重要。我从 getnodelist 返回的列表总是正确的,但是如果我使用调试器,它会覆盖 ArrayList 中的所有其他存储列表。

标签: java android list arraylist


【解决方案1】:

在您的代码中

nl.add(new Node(0,1, xy.getnodelist());
                     ^^^^^^^^^^^^^^^^

我突出显示的部分不会创建新列表,它会返回对现有列表的引用。这就是为什么您的列表总是相同的(因为只有一个列表,并且有几个引用)。

听起来你在寻找

nl.add(new Node(0,1, new ArrayList<Integer>(xy.getnodelist()));

【讨论】:

    猜你喜欢
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 2012-11-30
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多