Ich versuche, meine eigene Sammlung Klasse in Java zu tun.Richtiger Weg, um meine eigene Sammlung in Java zu machen
Ich muss Daten durch einen Schlüssel finden und in der Lage sein, darauf zu iterieren und ein Element durch seinen Index zu erhalten, also entscheide ich mich, eine Verkapselung der Hashtabelle und der Arraylist zu machen.
Dies ist mein Code:
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;
}
}
Es gibt keine Notwendigkeit Liste Schnittstelle oder etwas ähnliches zu implementieren? Weil ich nicht weiß, ob man die Hashtabelle und die Arrayliste einkapselt und die grundlegenden Operationen implementiert, um diese Klasse "Sammlung" aufzurufen.
Ich bin sehr dankbar für jede Beratung oder Korrektur dieses Codes.
Danke.
Warum nicht die 'Collection' Schnittstelle implementieren? – Logan
Dies ist wahrscheinlicher am Thema bei [Code-Review] (http://codereview.stackexchange.com). – Radiodef
Sie können 'List' nicht implementieren (zumindest nicht die Teile zum Hinzufügen), da Listeneinträge keine Schlüssel haben. Sie möchten wahrscheinlich 'Map' implementieren. – Thilo