【问题标题】:Arraylist vs Array with custom objects in javaArraylist vs Array 与 java 中的自定义对象
【发布时间】:2012-11-22 21:30:40
【问题描述】:

我正在尝试将一段代码从使用自定义对象的 ArrayList 转换为常规数组。

我之前的定义是

ArrayList<Room> rooms = new ArrayList<Room>();

我现在改成了

Room[] rooms;

之前我使用以下行将项目添加到数组列表中

rooms.add(new Room(1,1,30,false,true,true,false));

但我现在正在努力寻找应该在整个代码中简单地将单个项目添加到数组中的方法。

【问题讨论】:

  • 您是在问如何将数组的元素添加到 ArrayList 中(反之亦然)?
  • 我想放弃使用数组列表,我想将数组列表中的元素添加到数组中。
  • List&lt;Room&gt; rooms = new ArrayList&lt;Room&gt;(); 更可取(编码到接口原则)

标签: java arrays arraylist


【解决方案1】:

我认为你最好在这里坚持使用 arrayList,但只是为了让你更清楚地了解它。

要做你想做的事,你必须保留一个索引整数,它只指向数组中的当前位置,然后当你添加时,你可以增加它并将新对象添加到下一个位置。 当您达到数组的最大大小时,您将需要扩展它。 你会发现已经有人问过关于扩展数组的问题,你可以在这里找到答案: Expanding an Array?

【讨论】:

  • 实际上很简单:只需复制粘贴ArrayList 的确切实现即可。你肯定无法击败它。
【解决方案2】:

如果您可以使用固定大小的数组,那么您至少有一点成功的机会。如果没有,你就无法击败ArrayList,如果你的任务是在不重新实现的情况下取得成功,那么这是一个不可能完成的任务。

您真的应该更深入地了解重写代码的确切理由,这将使我们有机会适当地帮助您。

【讨论】:

  • 尤其是当您在努力向数组中添加元素时。
【解决方案3】:

我可以推荐:
只要您需要插入元素,就使用 Arraylist。一旦数组最终转换为数组。

【讨论】:

    【解决方案4】:

    如果在添加另一个元素时需要增加数组的大小,则必须构造一个旧数组大小为+1的另一个数组。 之后,您会将旧数组的内容复制到新数组(更大的数组)中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      • 2010-10-19
      • 2013-03-02
      • 2016-06-17
      • 1970-01-01
      相关资源
      最近更新 更多