2011-09-11 5 views

Répondre

4

Vérifiez l'API car il peut y avoir des limitations sur les types autorisés pour les clés en fonction de la carte spécifique. En outre, vous ne pouvez utiliser que des types de référence mais pas des types primitifs. Donc le double ne fonctionnera pas, mais Double est bien. Enfin, la clé ne doit de préférence pas être mutable car cela peut entraîner un comportement aberrant.

1

doubles ne fonctionnera pas, car ils sont de type primitif, c'est-à-dire que vous ne pouvez pas définir une carte Map<double,String>. Toutefois, vous pouvez définir Map<Double,String> puis utiliser une valeur double pour la méthode put (grâce à l'auto-numérisation). La mise en garde d'un objet abitable dans une carte est que, à moins que les méthodes equal et hashcode soient remplacées, l'égalité est basée sur des références, ce qui peut ne pas être le comportement souhaité. (Vous pourriez donc vous retrouver avec deux entrées, où vous n'en attendriez qu'une seule.)

2

Vous pouvez utiliser n'importe quel type d'objet. Mais pour obtenir un comportement correct, le type doit avoir des fonctions hashCode() et equals() correctement implémentées.

Donc, si vous voulez utiliser double vous devriez plutôt utiliser Double et à cause de la boxe et unboxing vous pouvez réellement passer double valeurs aux fonctions telles que add() etc.

0

Pour une touche, vous pouvez utiliser toute Object qui est unique à votre ensemble de données. Vous ne pouvez pas utiliser int ou double mais vous pouvez utiliser Integer ou Double. Veuillez noter qu'une clé ne peut avoir qu'une seule valeur, d'où l'exigence d'un objet unique. Si vous ajoutez la même touche deux fois la deuxième valeur sera stockée dans la Map

0

vous devez utiliser un objet
si vous souhaitez utiliser le double, vous pouvez utiliser la classe wrapper Double vous ne pouvez pas utiliser le type de données primitive comme int ou long ou double si vous souhaitez utiliser un, vous pouvez chercher la classe wrapper qui le représentent

chaîne est Okey car il est une classe

0

types de données primitives ne sont pas autorisés, mieux vous classe wrapper pour stocker vos données sur la carte. De plus, jusqu'à ce que vous remplaciez votre méthode d'égalité et de code de hachage, l'utilisation de map n'est pas très utile.

Questions connexes