【问题标题】:Appending List to List [duplicate]将列表附加到列表 [重复]
【发布时间】:2015-08-05 03:52:33
【问题描述】:

我正在编写一个名为List 的类,它创建一个Customers 的实例变量数组(Customer 只是另一个接受String 参数作为人名的类),

private Customer[] data

我正在尝试编写一个追加方法,该方法将采用 Customer 并将其添加到 main 方法中的另一个 List

为此,似乎有一个名为addAll() 的方法,但是由于我是从头开始编写这段代码,所以我不能使用它。我查看了这个方法的伪代码以获得一个大致的概念,它将对象转换为一个数组,然后使用arraycopy 附加两个列表。

我的意思是说,如果我使用arrays,这种方式对我来说很有意义,但我试图从另一个列表中添加一个Customer 对象并将它们添加到主方法中的列表中。

【问题讨论】:

  • 如果您使用的是arraycopy,那么您必须使用数组(而不是Lists)。请提供更多背景信息。
  • 对不起,我使用的是List s,我的意思是我理解为什么伪代码使用arraycopy,但我想了解如何在没有arraycopy的情况下使用它,因为我没有使用@ 987654336@

标签: java object append


【解决方案1】:

不确定你想要什么,但我认为你可以自己实现 append 方法,就像 arraycopy 方法所做的那样。这是一个简单的例子

class List {
    private int size;
    private Customer[] data;
    private final static int DEFAULT_CAPACITY = 10; 

    public List() {
        size = 0;
        data = new Customer[DEFAULT_CAPACITY];
    }

    public void append(List another) {
        int anotherSize = another.size;
        for (int i = anotherSize - 1; i >= 0; --i) {
            if (size < data.length) {
                data[size++] = another.data[i];
                another.data[i] = null;
                another.size--;
            } else {
                throw new IndexOutOfBoundsException();
            }
        }
    }
}

【讨论】:

  • 顺便说一句,ArrayList类的源码很好参考。
  • 谢谢!虽然我不太明白another.data[i] = null; another.size--; 的意思,但你能快速解释一下吗?
  • @hello 这两行用于删除已获取并添加到基本列表中的元素。如果您不想删除元素并获取它,则不需要这样做。抱歉 for 循环中的错误,我刚刚修复了它。
  • 对,如果您从头开始,删除元素会更有意义。好的,再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-18
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 2013-03-08
相关资源
最近更新 更多