Comment nommer un HashMap en Java?

c'est peut-être une question idiote, mais je n'ai jamais trouvé une façon satisfaisante de nommer une variable de type HashMap<K,V> en Java. Par exemple - disons que j'ai un HashMap où chaque seau est un <K,V> Paire où K est un String dire représentant un "État" et V est un Integer représentant le nombre de comtés de l'état.

si le HashMap être nommé en tant que "mapStateCounty","stateToCountyMap", etc. ? Qui semble logiquement plus attrayant et intuitif à comprendre sans ça semble confus et verbeux?

40
demandé sur Jens Piegsa 2011-07-12 08:19:53

9 réponses

j'aime cette question parce que Java ne permet pas l'accès aux map via un opérateur comme []. Dans d'autres langues, nous pourrions dire des choses comme

numberOfCountiesIn["HI"]

ou

countyCountOf["CA"]

ou

numCountiesIn->{"MA"}

ou (en Scala, c'est cool)

numCountiesIn("WA")

et sur et sur. Aucun de ceux-ci ne fonctionne à Java, à cause de cette bêtise get mot!

countyCounts.get("NY")

en Effet!

EDIT: en fait, je pense countyCounts est le répondre (IMHO); je faisais juste remarquer que le besoin de get limite ses choix.

29
répondu Ray Toal 2011-07-12 05:52:55

Je ne crois pas qu'il y ait une règle écrite qui vous indique comment nommer votre carte, donc tant que vous arrivez avec une règle qui a du sens pour vous (et vos coéquipiers), alors ça devrait aller.

personnellement, j'aime appeler mes cartes keyToValue ou valueByKey.

21
répondu RAY 2011-07-13 09:46:22

je dirais que c' numCounties ou countyCounts.

8
répondu Matt Ball 2011-07-12 04:22:35

tout D'abord, évitez de mettre les détails de la mise en œuvre dans le nom d'une variable, par exemple StateToCountyMap. Aujourd'hui vous utilisez un Map interface mais demain vous pouvez décider de stocker vos données dans un autre type et le nom de votre variable doit être remanié sinon il deviendra invalide et trompeur.

vos données représentent l'association d'un État à son nombre de comtés, donc mon conseil est de nommer la variable comme stateToNumberOfCounties. Le point-clé de ce nom est to qui désigne que cette variable stocke une association, la partie avant qui est le key et la partie après le value ou values qui sont associés à la correspondante key. Il serait également indistinct de nommer la variable comme stateToCountyNumber parce qu'on ne peut pas dire si elle stocke la relation entre un état et son nombre de comtés ou elle stocke un seul nombre qui représente le nombre d'État aux associations de comtés, donc vous devriez aller et venir dans votre code pour vérifier si elle est de type Map ou de type int.

4
répondu Dimitar Bonev 2012-03-02 10:10:18

j'ai trouvé un excellent cas pour countiesByStateici:

valuesByKeys, comme dans teamsByCaptains. Si vous voulez inclure à la fois la clé et la valeur, cela semble être le mieux lu. À un niveau élevé, vous pouvez lire simplement comme des "équipes", donc tout ce qui est effectué est effectué sur les équipes. Le préfixe "byCaptains" se lit comme il se doit: un qualificatif moins significatif qui suit les équipes autour pour aider quelqu'un à comprendre la structure si elles ont besoin de.

cela vous permet également d'accéder à une valeur dans un JSP avec la notation nice countiesByState[myState].

4
répondu Noumenon 2017-02-07 20:29:49

Quel que soit l'explique mieux Dans ce cas stateToCountyMap est ok ou autre countiesInStateMap peut être utilisé.

1
répondu Nrj 2011-07-12 04:22:37

je dirais que c' mapStatesbyCountyCount, puis à nouveau son nom de variable assez long...

1
répondu Charith 2011-07-12 06:37:01

Mon avis, serait de l'avoir countiesCountOfStateMap ou tout simplement countiesOfStateMap puisque nous allons faire compter les comtés en utilisant L'État.

ce serait plus significatif de l'avoir comme ça, donc quand une nouvelle personne regarde dans votre code au moins il serait conscient de ce qu'il y a dedans.

mais à la fin de la journée, c'est votre décision d'avoir le nom approprié et comme @tulskiy mentionné nommer la classe et la variable de manière appropriée est l'une des choses les plus difficiles.

0
répondu raksja 2011-07-12 04:51:25

stocker les États et les comtés dans cette variable il serait déroutant de l'appeler map-call it stateCountyHash ou numCountiesByState

-1
répondu Tudor Constantin 2011-07-12 04:23:00