2015-07-23 3 views
5

Ich versuche eine Set<E> Schnittstelle in Java zu schreiben, die von einer anderen Klasse mySet<E> unter Verwendung einer arrayList<E> implementiert wird, um die Elemente zu speichern.Welche Argumente sollten hinzufügen Funktion für generische Gruppe <E> in Java akzeptieren?

Ich beabsichtige Funktionen regulären Satz enthalten: add(), remove(), union()intersection() usw.

Was sollte der Typ für meine add() und remove() Funktionen sein? Ich habe versucht, add(Object E) und add(<E>) zu verwenden, aber läuft auf Fehler. Wir verwenden die gleiche Art Notation wie die der Schnittstelle/Klasse

@Override 
public Iterator<K> iterator() { 

@Override 
public boolean add(K k) { 

@Override 
public int size() { 

@Override 
public boolean contains(Object o) { 
+0

sollte Winkel Klammern mit einem E in ihnen nach Satz und mySet und ArrayList sein, aber es kann nicht angezeigt werden. – Massin

+2

Können Sie bitte etwas Code zeigen? –

+2

Eine großartige Ressource dafür ist die vorhandene Java API. Können Sie z.B. Verwenden Sie was ['java.util.Set'] (http://docs.oracle.com/javase/7/docs/api/java/util/Set.html)? Natürlich müssen Sie noch https://docs.oracle.com/javase/tutorial/java/generics/ oder ein anderes Tutorial dazu lesen. Grundlegende Generika sind überhaupt nicht schwer. Fortgeschrittene Generika können schwierig sein und es ist sehr schwer, alles richtig zu machen. –

Antwort

0

A Set<K> würde AbstractSet<K> in der Regel verlängern und implementieren.

public interface ISet<E>{ 
    boolean add(E element); 
    boolean remove(E element); 
} 

Wie pro Ihre Frage, wie Sie benötigen eine Implementierung dieses erstellen Sie den folgenden Beispielcode versuchen:

public class MySet<E> implements ISet<E>{ 
    private List<E> myInnerList = new ArrayList<E>(); 

    public boolean add(T element){ 
     //write you code here for adding the element 
     // i.e. myInnerList.add(element); 
     return false; 
    } 

    public boolean remove(T element){ 
     //write you code here for adding the element 
     // i.e. myInnerList.remove(element); 
     return false; 
    } 
} 

Hoffnung dies Ihr Problem löst.

+0

Auch wenn Sie Recht haben, haben Sie die Frage nicht beantwortet. – Timo

+0

@Timo - Einverstanden - und ich bin versucht zu löschen, aber es beantwortet den Titel der Frage so ATM Ich werde es verlassen. – OldCurmudgeon

0

Jedes Mal, wenn wir eine Implementierung von Generika Art schreiben:

Verwandte Themen