当前位置: 首页 > 知识库问答 >
问题:

List中的对象具有相同的值-即添加的最后一个元素的值[重复]

秦昂然
2023-03-14

Hy,

我对JAVA有点陌生,有个大问题。当我向列表中添加元素时

以下是代码:

// Global variables
private static int rows = 20;
private static int columns = 30;
private static String[][] labirinth = new String[rows][columns];
private static List<int[]> walls = new ArrayList<int[]>();

// Local variables inside a function
int[] wall = new int[2];
if(row - 1 <= rows && labirinth[row-1][column] == "*")
{
    wall[0] = row-1;
    wall[1] = column;
    walls.add(wall);
}
if(row + 1 <= rows && labirinth[row+1][column] == "*")
{
    wall[0] = row+1;
    wall[1] = column;
    walls.add(wall);
}
if(column - 1 <= columns && labirinth[row][column-1] == "*")
{
    wall[0] = row;
    wall[1] = column-1;
    walls.add(wall);
}
if(column + 1 <= columns && labirinth[row][column+1] == "*")
{
    wall[0] = row;
    wall[1] = column+1;
    walls.add(wall);
}

最后,walls变量将多次保存wall的最后一个结果。

谢谢你的帮助!


共有2个答案

文心思
2023-03-14

你需要知道数组是一个对象。声明变量时,声明的是对该数组的引用。

这意味着,您只需引用同一数组,并将同一数组多次添加到您的墙中

您应该为墙中的每个条目创建一个新数组

龚联
2023-03-14

始终更改同一对象:

int[] wall = new int[2];

但每次为墙设置新值并将其添加到列表之前,您应该:

wall = new int[2];

如果您不这样做,您将每次更改相同的墙壁坐标,最终只有一面墙壁具有您上次设置的坐标。

// Local variables inside a function
int[] wall = null;
if(row - 1 <= rows && labirinth[row-1][column] == "*")
{
    wall =  new int[2];
    wall[0] = row-1;
    wall[1] = column;
    walls.add(wall);
}
if(row + 1 <= rows && labirinth[row+1][column] == "*")
{
    wall = new int[2];
    wall[0] = row+1;
    wall[1] = column;
    walls.add(wall);
}
...
 类似资料:
  • 我正在学习用java实现链表类。但每次调用get方法时,都会得到最后一个节点的内容。我不知道为什么。代码如下:, 我得到的结果是, 我想在类中添加一些数据,并创建该类的链接列表。 提前谢谢!

  • Spark-Scala环境中的函数有一些问题。我想在我的DataFrame中添加一个新列,如下所示: 变成: 但是Spark返回给我这个错误: 你能帮我吗?非常感谢!

  • 我有一个记录。 我的

  • 我有一个对象数组,希望删除所有具有特定键值的对象。 该数组如下所示:

  • 问题内容: 我有一个对象数组,希望根据特定的对象对进行修剪。我想创建一个数组,此特定对仅包含一个对象。将重复项的哪个对象复制到新数组并不重要。 例如,我要基于的属性进行修整,创建一个仅包含每个值之一的新数组: 会成为: 是否存在会循环执行此操作的JavaScript或Angular函数? 编辑:要筛选的属性嵌套在另一个属性中。 问题答案: 您可以为此使用下划线:

  • 有太多关于大致相同主题的问题,但我找不到我想要的。如果我错过了,我很抱歉。 我正在尝试散集具有公共逻辑元素但使用不同标记定义的XML文件: 两个<代码> 我可以这样做: 所需要的只是在和中实现并分别返回或。 然而,在中有一个属性并以某种方式告诉JAXB将这两个字段映射到它似乎更简单。 我是不是想多了?你将如何实现它? (当然,我无法控制输入XML。如果可能的话,我还想避免使用MOXy的解决方案,因