Ich habe eine Klasse geschrieben, die einige funktionale Methoden enthält. Zuerst habe ich sie mit List als Parameter und Rückgabetyp geschrieben. Dann dachte ich: "Hey, man könnte auch einen generischeren Typ verwenden!", also ersetzte ich die Listen durch Seq, in der Hoffnung, dass ich meine Sachen eines Tages schneller machen könnte, indem ich sie mit etwas anderem als Listen füttere.
Für welche universelle stapelartige Datenstruktur soll ich also meine Methoden und Algorithmen schreiben? Gibt es ein allgemeines Muster, an das ich mich halten kann? All dies ist notwendig, weil die Methoden in der Zukunft optimiert werden müssen, falls sie einen Flaschenhals bilden.
Update
Ich werde versuchen, etwas genauer zu sein: Vorausgesetzt, Sie wissen, welche Operationen Sie verwenden, wie z. B. Umkehrung, .tail, direkter Elementzugriff oder für Comprehensions. Kann ich einen Typ wählen, der Kraft Effizienz bei diesen Vorgängen?
Aktualisierung 2
Ich bin mir der Leistungsfähigkeit konkreter Datenstrukturen für verschiedene Aufgaben durchaus bewusst. Was ich nicht weiß, ist, welche Datenstruktur als Unterklasse eines Supertyps auftreten kann.
Soll ich zum Beispiel TraversableOnce oder IndexedSeq anstelle von List oder Array verwenden? Kann ich dadurch etwas gewinnen?
Zusätzliche Frage
Was ist Ihr Standard-Signatur der listenartigen Datenstruktur? Schreiben Sie
def a(b: List[A]): List[A]
o
def a(b: TraversableOnce[A]): TraversableOnce[A]
Können Sie erklären, warum?