Ich erstelle ein einfaches Spiel des Krieges mit Karten für meine Datenstrukturen Klasse.Liste <E> Implementierungen
Ich habe derzeit ein Verfahren wie folgt:
Play Turn(List<Card> player1, List<Card> player2){
return null;
}
Das obige Verfahren (was ich verstehen unvollständig zur Zeit ist) ist wohl jede Subschnittstelle der Liste Schnittstelle zu übernehmen (dh Stapel, Arraylist, LinkedList, usw.).
Der Stapel verwendet pop(), um den Anfang des Stapels zurückzugeben/zu entfernen, und so etwas wie eine ArrayList oder LinkedList Ich kann die Methode get() verwenden, um das erste Element und dann die remove() -Methode zurückzugeben Element.
Also gibt es eine Möglichkeit, dass ich dies auf generische Weise tun kann, oder muss ich eine Methode erstellen, die auf jede Version der Liste zugeschnitten ist, die ich verwenden darf?
'Stack',' ArrayList', ..., implementieren alle die 'List' Schnittstelle Methoden (wie' get', 'remove', ...), so dass Sie nur diese für alles verwenden können ... warum Verwenden Sie die spezifischen 'Stack'-Methoden (wie' Pop'), wenn Sie nicht müssen? – BalinKingOfMoria
Sie benötigen keine separaten Implementierungen, wenn Sie Ihre Implementierungen auf List-Methoden beschränken. Wenn Sie sich vorstellen, dass Sie den zugrunde liegenden Typ kennen müssen, denken Sie noch einmal darüber nach. – duffymo
Das beantwortet meine Frage. Ich hatte den Eindruck, dass ich, obwohl ich den 'Stack' unter der 'List'-Schnittstelle benutzte, die Methoden wie' Pop 'im Vergleich zu Methoden wie' Holen 'und' Entfernen 'benutzen müsste. – Ryley6905