0
votes

Quel est le type de retour de Toset à Scala

Supposons que j'ai un tableau de scala arr de int . Considérons arr.toset . Je sais que Toset renvoie un objet objet . Est-ce définir A hashset ou arbreset en défaut?


5 commentaires

Cela dépend de la taille: docs.cala-lang.org/overviews/collections/sets .html


Stackoverflow.com/Questtions/26901866/...


Pourquoi vous souciez-vous des détails de la mise en œuvre? Si vous avez besoin d'un type spécifique de jeu, vous pouvez arr.to (Treeet) - BTW, vous êtes déroutant Types avec Classes .


@ Luismiguelmejíasuárez peut-être parce que différentes implémentations ont des performances différentes en ce qui concerne certaines opérations?


@DMytromitine Fair, c'est pourquoi j'ai dit que si vous voulez un type d'ensemble spécifique, demandez-lui explicitement.


3 Réponses :


1
votes

https: / /Github.com/scala/scala/blob/2.13.x/src/Library/scala/collection/immauttable/set.scala

jusqu'à 4 éléments vientystet , set1 , ..., set4 (comme des tuples), puis hashset .


0 commentaires

5
votes

Le temps de compilé type em> de la valeur renvoyée par Toset code> est définir code> xxx pré>

Cependant le temps d'exécution classe em> de l'objet renvoyé par Toset code> peut différer que nous pouvons vérifier à l'aide de SCALA RÉP P>

Array(1).toSet.getClass                 // class immutable.Set$Set1
Array(1, 2).toSet.getClass              // class immutable.Set$Set2
Array(1, 2, 3).toSet.getClass           // class immutable.Set$Set3
Array(1, 2, 3, 4).toSet.getClass        // class immutable.Set$Set4
Array(1, 2, 3, 4, 5).toSet.getClass     // class immutable.HashSet
Array(1, 2, 3, 4, 5, 6).toSet.getClass  // class immutable.HashSet
...


0 commentaires

2
votes

Supposons que j'ai un tableau de scala arr code> de int code>. Considérons arr.toset code>. Je sais que Toset code> renvoie un objet code> objet code>. Est-ce définir code> A hashset code> ou arbreset code> en défaut? P>

ni. C'est un scala.collection.immauttable.set . P>

Voici La documentation de scala.array.toset code> (qui est en fait scala.collection.itéAblableOsops.toset code> ): p>

def toSet[B >: A]: Set[B]


0 commentaires