Cela ressemble à une question stupide, mais tout ce que j'ai trouvé sur Internet était une poubelle. Je ne peux tout simplement pas ajouter un élément de type T
dans une liste List[T]
. J'ai essayé avec myList ::= myElement
mais il semble que cela crée un objet étrange et y accéder myList.last
renvoie toujours le premier élément qui a été mis dans la liste.
223
List
est converti en unListBuffer
, l'élément est ajouté et leListBuffer
converti en arrière (à peu près commeString
etStringBuilder
en Java), mais ce n'est qu'une supposition.C'est parce que vous ne devriez pas le faire (au moins avec une liste immuable). Si vous avez vraiment besoin d'ajouter un élément à la fin d'une structure de données et que cette structure de données doit vraiment être une liste et que cette liste doit vraiment être immuable, alors faites ceci:
ou ça:
la source
:+
, aussi inefficace qu'elle soit, elle ne la reconstruit qu'une seule fois.Les listes de Scala ne sont pas conçues pour être modifiées. En fait, vous ne pouvez pas ajouter d'éléments à un Scala
List
; c'est une structure de données immuable , comme une chaîne Java. Ce que vous faites réellement lorsque vous "ajoutez un élément à une liste" dans Scala, c'est de créer une nouvelle liste à partir d'une liste existante . (La source)Au lieu d'utiliser des listes pour de tels cas d'utilisation, je suggère d'utiliser soit un,
ArrayBuffer
soit unListBuffer
. Ces infrastructures de données sont conçues pour ajouter de nouveaux éléments.Enfin, une fois toutes vos opérations terminées, le tampon peut alors être converti en liste. Voir l'exemple REPL suivant:
la source
Ceci est similaire à l'une des réponses mais de manière différente:
la source
Nous pouvons ajouter ou pré-ajouter deux listes ou list & array
Append:
Prepending:
la source