gpt4 book ai didi

java - 用java制作我自己的 Collection 的正确方法

转载 作者:行者123 更新时间:2023-12-01 10:00:42 26 4
gpt4 key购买 nike

我正在尝试用 java 做我自己的集合类。

我需要通过键查找数据,并且能够迭代它并通过索引获取元素,所以我决定对哈希表和数组列表进行封装。

这是我的代码:

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;
}

}

是否需要实现列表接口(interface)或类似的东西?因为我不知道封装哈希表和数组列表并实现基本操作是否足以调用“Collection”这个类。

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

谢谢。

最佳答案

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

implements java.util.Collection<E>

这样你就必须实现集合接口(interface)中的每个方法bt使您的类扩展 AbstractCollection extends AbstractCollection 更加容易,因为它确实对我们来说所有必需的事情,您唯一需要担心的是iterator()size()

关于java - 用java制作我自己的 Collection 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36830774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com