【问题标题】:How can I access a value in an Object[] in an Arraylist in Java如何在 Java 的 Arraylist 中访问 Object[] 中的值
【发布时间】:2019-11-25 19:44:25
【问题描述】:

我有一个包含 Object[] 的列表,我想访问其中一个 Objects[] 的值。这就是我的代码的样子:

private List<Object> trackList;
trackList = new ArrayList<>();

Integer random = (int)(Math.random() * ((100 - 0) + 1)) + 0;
Integer random2 = (int)(Math.random() * ((100 - 0) + 1)) + 0;
Object[] currTrack = new Object[]{random1, random2};
trackList.add(currTrack);

Integer value1 = trackList.get(0)[1];

获取:“预期的数组类型;找到:'java.lang.object'

我想我错过了一些非常简单的东西。帮助会很好,谢谢。

【问题讨论】:

  • 为什么不将trackList 声明为List&lt;int[]&gt; 并将currTrack 声明为int[]
  • 1.您需要键入 cast。从对象到整数。
  • “我有一个里面有 Object[] 的列表” -> 显然不是……你的列表not 包含Object[] 或在至少它不是作为数组列表的类型......并且不使用类型化数组和列表,如int[]List[int[]] 在我看来很奇怪。

标签: java arrays list object arraylist


【解决方案1】:

你这样声明你的列表:

List<Object> trackList;

所以当你这样做时:

trackList.get(0)

这会给你一个Object,而不是Object[]

你需要投射它:

((Object[])trackList.get(0))[1]

但是你有另一个问题,因为上面的表达式返回一个Object,你想将它分配给一个Integer

所以你需要另一个演员..完整的行应该是:

Integer value1 = (Integer)((Object[])trackList.get(0))[1];

顺便说一句,将列表声明为包含您将实际放入其中的内容会更容易。

【讨论】:

  • 因为我假设了一个简单的解决方案来解决这个错误。列表 轨道列表;完美运行。感谢您的帮助:)
【解决方案2】:

在您的列表声明中,您设置该列表包含 Objects 而不是 Object[]:

List&lt;Object&gt; trackList;

所以当你这样做时:

trackList.get(0) 得到一个对象而不是对象[]

你需要把List初始化改成

List&lt;Object[]&gt; trackList;

【讨论】:

  • List trackList;完美地工作,是我一直在寻找的。谢谢...让我发疯了
猜你喜欢
  • 1970-01-01
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
  • 2018-05-16
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
相关资源
最近更新 更多