【问题标题】:Return ArrayList and use it in another method [closed]返回 ArrayList 并在另一种方法中使用它[关闭]
【发布时间】:2012-12-06 07:39:58
【问题描述】:

我有一个返回对象数组列表的方法。我返回创建的arraylist,它填充了许多对象,我通过以相同的方法打印它们来检查它们是否存在。当我在另一种方法中使用该 Arraylist 作为参数时,它会给我一个错误,就像 Arraylist 为空一样。

让我们用 getFila 和 getColumna 方法说对象的 Position(y,x)。 而失败的方法(实际上什么都不做):

public static ArrayList<Position> getTrayectory (ArrayList<Position> aListPos){
        for (int ii = 0; ii < aListPos.size();ii++ ) {
            System.out.println("(" +  aListPos.get(ii).getFila() + "," + aListPos.get(ii).getColumna()+")");
        }
        return aListPos;
    }

我返回了包含许多对象的 Arraylist,但我不知道发生了什么。

总结:

1- I have a method that returns an ArryList
2- I create a new Arraylist with method in 1
3- I use new method with Arraylist in 2 as parameter.

(4-) Nothing happens, because new arraylist in 2 look empty.

任何人都可以在此过程中帮助我吗?

【问题讨论】:

  • 你能给出确切的错误和你的数组列表被填充的代码吗?
  • 我现在不在电脑前。数组列表的填充方式是否重要?我知道它已填充,因为我可以遍历它打印每个元素的值。无论如何我把代码贴在这里。
  • @AgusDG 你能解释一下这两个项目吗aListPos.get(ii).getFila()aListPos.get(ii).getColumna()
  • 当然。 aListPos 是数组列表。它是对象位置类型,所以当我执行 .get(ii) 时,我得到位置 ii 的对象,所以是 toString,但是因为我想要数组列表的每个对象的属性,所以我调用 getFila 和 getColumna调用对象Position的属性int Fila和int Columna。

标签: java methods arraylist return


【解决方案1】:

如果您使用的是 Eclipse 之类的 IDE,您可以轻松地在有问题的代码中插入断点,并且可以“监视”每个变量的内容。

这样您就可以找出您的数组列表变空的确切位置。

【讨论】:

  • 这应该作为评论而不是回答。你没有向他解释为什么会这样。
【解决方案2】:

我认为您的 ArryList 包含 Position 对象。我不知道具体所以这只是我的猜测。

       System.out.println("(" +  aListPos.get(ii).getFila() + "," 
       + ListPos.get(ii).getColumna()+")");

相反。试试这个

       System.out.println("(" +  (aListPos.get(ii)).getFila() + "," 
       + (ListPos.get(ii)).getColumna()+")");

【讨论】:

    【解决方案3】:

    如果您在提供它的(看不见的)方法中创建 ArrayList,您会返回它吗?还是你在修改参数?

    换句话说,你是这样做的吗:

    ArrayList<Position> myArrayList = generateArrayList(); // or whatever you call it
    

    或者你正在这样做:

    ArrayList<Position> myArrayList;
    generateArrayList(myArrayList);
    ArrayList<Position> result = getTrayjectory(myArrayList);
    

    第二个版本不起作用,因为当您在方法内创建对象时,它可以逃脱方法边界的唯一方法是由该方法返回。否则,方法结束时会超出范围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-20
      • 1970-01-01
      • 1970-01-01
      • 2014-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      相关资源
      最近更新 更多