【问题标题】:Store int in ArrayList and get it back to primitive variable int - Java将 int 存储在 ArrayList 中并将其返回到原始变量 int - Java
【发布时间】:2011-12-05 07:20:09
【问题描述】:

我遇到了一个错误,不知道如何解决。

我将一个 int 添加到 ArrayList。

int n = 1;
ArrayList list = new ArrayList();
list.add( n );

再往下,我试着把它放回另一个int:

grid[ y ][ x ] = list.get(0);

我也试过这个:

grid[ y ][ x ] = (int) list.get(0);

但它不起作用,我得到这个错误:

found   : java.lang.Object
required: int
grid[ y ][ x ] = (int)list.get(0);
                              ^

我希望有人可以帮助我。

【问题讨论】:

  • grid的声明是什么样子的?

标签: java arraylist int


【解决方案1】:

使用类型参数而不是原始的ArrayList

ArrayList<Integer> list = new ArrayList<Integer>();

您得到的错误是因为您无法将Object 转换为int,自动装箱在那里出现故障。您可以将其转换为Integer,然后将其自动拆箱为int,但使用类型参数是更好的解决方案。

【讨论】:

    【解决方案2】:

    使用ArrayList&lt;Integer&gt;。当您执行list.get() 时,您将获得一个Integer,您可以调用intValue() 以获得int

    【讨论】:

      【解决方案3】:

      (Integer)list.get(0) 可以解决问题。自动拆箱会自动将其转换为int

      【讨论】:

        【解决方案4】:

        Array-list 和 Arrays 之间的主要区别在于,Array-list 只能将对象存储到其中,但不能存储原始数据类型(在您的情况下为整数)。所以为了解决这个问题,我们使用ArrayList&lt;Integer&gt; list = new ArrayList&lt;Integer&gt;(); 谢谢。

        【讨论】:

          【解决方案5】:

          你可以像这样创建一个 ArrayList:

          ArrayList<Integer> List = new ArrayList<Integer>();
          

          然后做同样的事情,出现这个问题是因为 ArrayList 只能以 Objects 的形式存储元素,因为它是 Java 中 Collections 框架的一部分,其中所有内容都以 Objects 的形式存储。因此它将原始 int 转换为导致问题的 Wrapper Class Integer。

          【讨论】:

            猜你喜欢
            • 2015-07-09
            • 2013-10-16
            • 2015-07-05
            • 1970-01-01
            • 1970-01-01
            • 2020-06-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多