一項任務要求我們使用ArrayList或LinkedList作爲後端來實現Bag數據類型。我選擇了ArrayList並創建了自己的實現,包括Collection接口的本地實現。現在我正在努力處理如何使用我的List類來調整Bag屬性的基本概念,特別是在List中插入List。實現基於Arraylist的Bag/Multiset-卡在泛型上
我的列表中設置方式遵循通常的Java類型,除了所有的方法都沒有實現,這就是爲什麼我寫我自己Collection接口類型爲
public interface Collection<E>
實現添加,刪除,大小,清除,包含,isEmpty和toArray方法。
列表類型被聲明爲
public class List<E> implements Collection<E>
有三個私有字段:
private int size;
private E[] data;
private int growSize=10;
的E[] data
持有任何元素類型是必要的,並且growSize是新的插槽來增加列表中的號碼大小根據需要。當List被傳統用於單個對象時,這很好用,但當我嘗試插入List類型時,出現錯誤。
我想實現這個方法:
public boolean add(Collection<E> c){
if (size < data.length){
data= (E[]) new Object[10];
data[0]= c;
}
}
當我嘗試這一點,它說有收集和E之間的類型不匹配
兩個問題:
- 第一,我在這裏打破Java泛型的規則,爲什麼?
- 其次,需要解決什麼問題?
給你的錯誤,並導致它的代碼的更多信息,請 –
E能類型列表>的。你遇到了什麼錯誤? – JustinKSU
'add'做什麼?添加單個元素?或添加一些集合中的所有元素? – newacct