【问题标题】:How to add to an arraylist without creating an embedded array如何在不创建嵌入式数组的情况下添加到数组列表
【发布时间】:2016-06-10 20:58:41
【问题描述】:

我知道 arraylist 有一个 .add() 方法,但由于某种原因,每当我添加到我现有的 arraylist 时,我最终都会得到一个嵌入式数组......我有一个返回 objectInputstream 的方法,它可能是一个或多个对象,根据条件,我想添加它并将其呈现给用户,但是,它将 objectInputstream 作为数组嵌入。

例如:

1. [item1]
2. [item1, item2]
3. [[item1, item2], item3]
4. [[[item1, item2], item3], item4]

一直这样。如果它更像这样,我会更喜欢:

[item1, item2, item3, item4]

【问题讨论】:

  • 请向我们展示产生这些结果的代码。
  • 请发布您的代码。
  • 您正在将 ArrayList 添加到 ArrayList。解决方案:停止这样做。如果您需要更具体的帮助,我同意其他人的观点:请出示您的违规代码。

标签: java arrays arraylist objectinputstream


【解决方案1】:

问题是,您使用的是ArrayList.add() 方法而不是ArrayList.addAll() 方法。 add() 方法将传递的对象添加到列表中,其中 addAll 接受一个集合,并将该集合中的每个元素添加到列表中——这就是你想要的。


另一个需要注意的问题是,您可能没有使用泛型。那完全可以避免这个错误。

为了方便您,我在online Java compiler IDE 中有示例代码。

附带说明一下,以后在提出编程问题时,可以在codivaideone 等在线IDE 中嵌入一小段相关代码,以帮助那些想要回答的人。

【讨论】:

  • 嘿,谢谢,因为我期待多个对象,我只是使用 List,这很糟糕吗?我也不想分享代码,因为我想有一个概念性的理解,并且不希望代码存在于潜在的作弊中,因为剥离需要一段时间。
  • 首先,我的解决方案有效吗?至于 List,在某些情况下需要这样做,但在大多数情况下,您可能会做得更好。
  • 抱歉,我的回复延迟了。我尝试使用 .addAll 和相同的 endcase,但我确实尝试指定一个 并且它工作得很好,知道为什么吗?我真的很希望接受任何对象
  • 在这点上,只有能看到代码才能帮上忙。创建一个小程序来演示您的问题并在此处分享
【解决方案2】:

请出示您的代码。另外,请运行此代码以查看如何将值添加到数组中。

import java.util.ArrayList;

public class myArrayList {
   public static void main(String[] args) {

   ArrayList<Integer> arrlist = new ArrayList<Integer>(4);

   arrlist.add(4);
   arrlist.add(9);
   arrlist.add(34);
   arrlist.add(42);


   for (Integer number : arrlist) {
   System.out.println("Number = " + number);
   }  
   }
} 

这是来自http://www.tutorialspoint.com/java/util/arraylist_add_index.htm的示例

【讨论】:

  • 如果您决定投反对票,请解释您的理由。这样SO答案可以改善。不要小气。
  • 我没有投反对票,但你所拥有的正是我目前正在做的。
猜你喜欢
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 2012-08-26
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
相关资源
最近更新 更多