测试'<t>'列表</t>的实现

时间:2010-11-14 20:01:08

标签: java list testing collections

我编写了自己的java.utils.List实现。现在我想测试它,但是我无法用对象填充我的集合,因为每当我添加任何内容时它都会显示<identifier> expected

public static void main(String[] args) {}

MyCollection col = new MyCollection(10);
int[] tab = {1,2,4,5,6};
col.add(tab);

这里的整个代码:

http://paste.pocoo.org/show/291343/


修改

MyCollection<Integer> col = new MyCollection<Integer>(10);
Integer[] tab = {1,2,4,5,6};
col.add(tab);

仍然相同:/

4 个答案:

答案 0 :(得分:1)

您尝试添加int[]作为Collection<Integer>的项目,仅接受Integer(或自动装箱int)项目。这只有在Collection<int[]>(其中添加的数组才是唯一项目)时才有效。

要将int[]转换为Collection<Integer>,您需要循环播放它:

int[] array = { 1, 2, 3, 4, 5 };
Collection<Integer> collection = new ArrayList<Integer>();
for (int item : array) {
    collection.add(item);
}

另见:

答案 1 :(得分:0)

你错过了你的类型。它是一个泛型类,所以它应该像

MyCollection<Integer> col = new MyCollection<Integer>(10);

答案 2 :(得分:0)

变化:

MyCollection<Integer> col = new MyCollection<Interger>(10);

您需要指定MyCollection的T.

答案 3 :(得分:0)

此处的一般含义不会导致错误,您只需获得警告,因为您添加到列表中的任何对象都将被删除为Object,因此您可以添加任何对象并失去类型安全性。

您已经实例化了一个列表,其成员是单个对象,无论类型如何,但您尝试将数组添加为单个成员。你有几个选择,但我会坚持:

List<Integer> myCollection = new MyCollection<Integer>(10);
myCollection.addAll(Arrays.asList(1, 2, 3, 4, 5, 6));

如果你真的打算有一个数组列表,你可以这样做:

List<Integer[]> myCollection = new MyCollection<Integer[]>(10);
myCollection.add(new Integer[]{1,2,3,4,5,6});

几点说明:

  • 编程到界面(参见我的示例)
  • 您的实现称为MyCollection,但它实际上是List的实现,因此除非您计划实际扩展MyList,否则Collection之类的名称似乎更合适。
  • 我认为这只是一个练习,但我没有看到扩展List的重点。您知道java.util.ArrayList存在吗?