我正在尝试在java中创建自己的集合类。
我需要通过键找到数据,并且能够迭代它并通过索引获取元素,所以我决定对哈希表和arraylist进行封装。
这是我的代码:
public class GeoCollection <T extends Geographic> implements Iterable<T>, Iterator<T>{
private Hashtable<String,T> data_table;
private ArrayList<T> data;
private int cursor = 0;
public GeoCollection(){
data = new ArrayList<>();
data_table = new Hashtable<>();
}
public void add(String key,T data){
this.data.add(data);
data_table.put(key,data);
}
public T get(int index){
if(index >= data.size())
throw new IndexOutOfBoundsException();
return data.get(index);
}
public T get(String v){
return data_table.get(v);
}
public T next() {
if( cursor == data.size())
throw new NoSuchElementException();
cursor++;
return data.get(cursor-1);
}
public T first(){
cursor = 0;
return data.get(cursor);
}
public boolean hasNext(){
return cursor < data.size();
}
public boolean remove(Person p) {
return data.remove(p);
}
//se implemeta el iterator
@Override
public Iterator<T> iterator() {
cursor = 0;
return this;
}
}
是否需要实现列表界面或类似的东西?因为我不知道是否封装了哈希表和arraylist并且实现了基本操作,足以调用“Collection”这个类。
我将非常感谢您对此代码的任何建议或更正。
感谢。
答案 0 :(得分:1)
我认为最好的方法是实施集合
implements java.util.Collection<E>
这样你就必须在集合接口bt中实现每个方法
让你的类扩展AbstractCollection extends AbstractCollection
要容易得多
对我们来说所有必要的事情,你唯一需要担心的是
iterator()
和size()