在java中创建自己的集合的正确方法

时间:2016-04-25 01:21:42

标签: java

我正在尝试在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”这个类。

我将非常感谢您对此代码的任何建议或更正。

感谢。

1 个答案:

答案 0 :(得分:1)

我认为最好的方法是实施集合

implements java.util.Collection<E>

这样你就必须在集合接口bt中实现每个方法 让你的类扩展AbstractCollection extends AbstractCollection要容易得多 对我们来说所有必要的事情,你唯一需要担心的是 iterator()size()