16 Stimmen

Sollte ich List[A] oder Seq[A] oder etwas anderes verwenden?

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X