2016-09-06 2 views
1

Ich sehe, dass Kotlin bietet eine Reihe von Schnittstellen zur Implementierung von Sammlungen. Sie sind auf this page aufgeführt.Bietet Kotlin irgendwelche Implementierungen seiner Sammelschnittstellen?

Ich sehe keine Implementierungen von diesen von Kotlin zur Verfügung gestellt.

Ich sehe jedoch, dass es Funktionen im globalen Namespace gibt, die uns helfen, Instanzen dieser Sammlungen zu erstellen. Für z.B. eine veränderbare Liste von Zahlen zu erstellen, können wir sagen:

var numbers : MutableList<Int> = mutableListOf(1, 2, 3); 

eine schreibgeschützte Ansicht der Liste zu erstellen, können wir sagen:

val readOnlyViewOfNumbers : List<Int> = numbers; 

Oder eine Nur-Lese-Liste zu erstellen Zahlen können wir sagen:

val readOnlyListOfNumbers : List<Int> = listOf(1, 2, 3); 

Um eine Liste der n Elemente und initialisieren jedes Element mit dem Wert null, zu schaffen könnten wir sagen:

// Sorry, I forgot the function name for this one. It 
// is not nullableListOf(...) 
val numbers : List<Int> = nullableListOf(n); 

Um ein Array zu erstellen, sagen wir, 5 Elemente mit einer Initialisierer-Funktion für jedes Element des Arrays, so können wir sagen:

val myArray : Array<Int> = Array(5, (i) => { /* return whatever */ }; 

Wenn ich jedoch eine List<Book> ohne erstellen möchten in ihm Bücher, aber ich würde einfach mag es so (Java oder C# -Code) initialisieren:

List<Book> books = new ArrayList<Book>(); // Java or 
List<Book> books = new List<Book>(); // C# 

Wie kann ich tun, dass in Kotlin?

Gibt es öffentlich zugängliche Implementierungen seiner Sammelschnittstellen? Haben sie Standardkonstruktoren?

+1

http: // stackoverflow.com/question s/33727657/kotlin-and-immutable-collections/38002121 für einen umfassenden Überblick über Kotlin und Sammlungen – miensol

+0

Werfen Sie einen Blick auf dieses Repo https://github.com/Kotlin/kotlinx.collections.immutable – IRus

+0

@IRus Sorry, vermisse ich etwas? Das sind eine Reihe von Schnittstellen. Wo ist die Implementierung? –

Antwort

4

Kotlin verwendet die Implementierungen von Java.

So

val list = listOf<T>() 

im Grunde ist

val list: List<T> = ArrayList<T>() 

Diese Funktionen für Komfort geschaffen

Verwendung von Java-Sammlungen ist zu fein:

val list: List<Book> = ArrayList<Book>() 
val mutableList: MutableList<Book> = ArrayList<Book>() 
+0

Danke. Ich verstehe, dass ich die Java-Sammlungen verwenden kann. Ich hatte den Eindruck, dass die Kotlin-Standardbibliothek auch eigene Implementierungen bereitstellte. –

+3

Sie haben so viel wie möglich von Java verwendet, um eine kleine Standard-Bibliothek zu haben (Vorteile bei Android -> Dex-Count) und um die Interoperabilität zu maximieren. – D3xter

Verwandte Themen