Sembra che ti stai chiedendo una domanda XY (http://xyproblem.info/). Vuoi davvero sapere come scrivere readStars
nel modo più efficiente, ma invece chiedi informazioni su HashSet
. Penso che @ mfulton26 risponda alla tua domanda a seconda di cosa viene chiesto.
Ecco la risposta per "come faccio a scrivere questo nel modo più efficiente:"
si hanno due opzioni. In primo luogo, una versione che auto-chiude il flusso alla fine:
fun BufferedReader.readStars(n: Int): Set<Star> {
return use {
lineSequence().map { line ->
val idx = line.indexOf(' ')
Star(line.substring(0, idx).toInt(), line.substring(idx + 1).toInt())
}.toSet()
}
}
E in secondo luogo, una versione che non è così:
fun BufferedReader.readStars(n: Int): Set<Star> {
return lineSequence().map { line ->
val idx = line.indexOf(' ')
Star(line.substring(0, idx).toInt(), line.substring(idx+1).toInt())
}.toSet()
}
Né versione crea una matrice, non fanno a fare copie di dati. Trasmettono i dati attraverso una sequenza che crea il Set e lo riempie direttamente.
Altre note
Non c'è bisogno di utilizzare scissione se siete veramente preoccupati per le allocazioni e le prestazioni. Basta usare indexOf(char)
e dividere la stringa da soli usando substring
.
Se fate una spaccatura, quindi si prega di utilizzare split(char)
non split(String)
quando si sta cercando di dividere su una char
fonte
2016-01-12 15:41:26
Sembra che ti stai chiedendo una domanda XY (http://xyproblem.info/). Preferiresti chiedere come eseguire 'readStars' nel modo più efficiente? –
Ho risposto a quale domanda sembra essere (X) invece di 'HashSet' (Y), vedere la nuova risposta di seguito. –
Hai provato a creare un 'HashSet' tu stesso? Come "val mySet = HashSet (...)'? Se è così, sapresti già come creare un 'HashSet'. Non hai mostrato ciò che hai già provato nella tua domanda, quindi è confuso perché chiunque può creare un 'HashSet' se lo desiderano Senza Kotlin stdlib Lo stdlib aggiungerebbe solo una funzione helper per renderlo più coerente con lo stile di Kotlin, ma non aggiunge' HashSet' alle opzioni disponibili –