Wie benenne ich eine HashMap in Java?

Lesezeit: 4 Minuten

Benutzer-Avatar
Benutzer396089

Dies mag eine dumme Frage sein, aber ich habe noch nie einen zufriedenstellenden Weg gefunden, eine Variable vom Typ zu benennen HashMap<K,V> auf Java. Nehmen wir zum Beispiel an, ich habe eine HashMap wo jeder Eimer ein ist <K,V> Paar wo K ist ein String Sagen Sie die Vertretung von “State” und V ist ein Integer Repräsentiert die Anzahl der Grafschaften, die der Staat hat.

Sollte die HashMap genannt werden als „mapStateCounty“, “stateToCountyMap” usw. ? Welches scheint logisch ansprechender und intuitiver zu verstehen, ohne verwirrend und wortreich zu klingen?

  • „In der Informatik gibt es nur zwei schwierige Dinge: Cache-Invalidierung und Benennung von Dingen“

    – Denis Tulsky

    12. Juli 2011 um 4:22 Uhr

  • … und Off-by-One-Fehler.

    – Rich Adams

    12. Juli 2011 um 4:24 Uhr

  • Fügen Sie außerdem Dereferenzierung von freigegebenem Speicher hinzu, Sie wissen nie, wann es abstürzen wird.

    – Benutzer396089

    12. Juli 2011 um 5:01 Uhr

  • Sie können es als countiesInState bezeichnen

    – Logan

    12. Juli 2011 um 5:02 Uhr

  • Mögliches Duplikat von Wie soll ich eine java.util.Map benennen?

    – Domi W

    23. April 2019 um 13:25 Uhr

Benutzer-Avatar
STRAHL

Ich glaube nicht, dass es irgendwo eine festgeschriebene Regel gibt, die Ihnen sagt, wie Sie Ihre Karte benennen sollen. Solange Sie also eine Regel finden, die für Sie (und Ihre Teamkollegen) sinnvoll ist, sollte es in Ordnung sein.

Ich persönlich nenne meine Maps gerne keyToValue oder valueByKey.

Benutzer-Avatar
Ray Total

Ich mag diese Frage, weil Java keinen Kartenzugriff über einen Operator wie erlaubt []. In anderen Sprachen könnten wir Dinge sagen wie

numberOfCountiesIn["HI"]

oder

countyCountOf["CA"]

oder

numCountiesIn->{"MA"}

oder (in Scala ist das cool)

numCountiesIn("WA")

und weiter und weiter. Keines davon funktioniert in Java, deswegen dumm get Wort!

countyCounts.get("NY")

In der Tat!

EDIT: Ich denke tatsächlich countyCounts ist der Beste Antwort (IMHO); Ich habe nur darauf hingewiesen, dass die Notwendigkeit für get schränkt die eigene Auswahl ein.

  • Ich finde CountryCounts würde zu der Annahme führen, dass die Variable eine einfache Sammlung wie eine Liste, aber keine Karte enthält. Wie würden Sie zwischen ihnen unterscheiden?

    – Domi W

    8. April 2019 um 19:28 Uhr

  • Schöne Beobachtung! Wann countyCounts von selbst verwendet wird, würde ich die Mehrdeutigkeit zugeben. Aber wenn es im Zusammenhang mit a verwendet wird getund in countyCounts.get("NY") zumindest für mich wissen wir, dass wir die Zählung bekommen zum NY Es ist also eine Karte, während wir es gesehen haben countyCounts[3] es ist ein Array, und countyCounts.get(3) ist eine Java-Liste. Persönlich bin ich bereit, diese Zweideutigkeit in Kauf zu nehmen, aber ich stimme zu, dass es eine Frage der Präferenz ist. Das ist albern get macht es peinlich (auf Englisch sowieso)! Die Flexibilität, die Sie in anderen Sprachen erhalten, ermöglicht countyCountsFor[state], countyCountOf, countiesInetc. ist so schön!

    – Ray Total

    31. Mai 2019 um 16:05 Uhr

  • Ich denke, es wäre sinnvoll, die Art des Keysets mit einem Namen wie z countyCountsByState

    – Julius

    8. Oktober 2019 um 14:41 Uhr

Benutzer-Avatar
Dimitar Bonev

Vermeiden Sie es zunächst, Implementierungsdetails in den Namen einer Variablen zu schreiben, z StateToCountyMap. Heute verwenden Sie a Map Schnittstelle, aber morgen können Sie entscheiden, Ihre Daten in einem anderen Typ zu speichern, und der Name Ihrer Variablen muss umgestaltet werden, sonst wird er ungültig und irreführend.

Ihre Daten stellen die Zuordnung eines Staates zu seiner Anzahl von Landkreisen dar, daher empfehle ich, die Variable als zu benennen stateToNumberOfCounties. Der Schlüsselpunkt in diesem Namen ist to was angibt, dass diese Variable eine Assoziation speichert, der Teil davor ist die key und der Teil danach ist der value oder values die dem entsprechenden zugeordnet sind key. Außerdem wäre es undeutlich, die Variable als zu benennen stateToCountyNumber weil man nicht sagen kann, ob es die Beziehung zwischen einem Bundesstaat und seiner Anzahl von Landkreisen speichert oder ob es eine einzelne Zahl speichert, die die Anzahl der Bundesstaat-Landkreis-Verbände darstellt. Sie müssten also in Ihrem Code hin und her gehen, um zu überprüfen, ob dies der Fall ist des Typs Map oder vom Typ int.

Ich würde es nennen numCounties oder countyCounts.

Ich habe einen tollen Fall für gefunden countiesByState hier:

valuesByKeys, wie in teamsByCaptains. Wenn Sie sowohl Schlüssel als auch Wert angeben, scheint dies am besten zu lesen. Auf hohem Niveau können Sie es nur als “Teams” lesen, also wird alles, was darauf aufgeführt wird, von Teams ausgeführt. Das Präfix „byCaptains“ liest sich so, wie es sein sollte: ein weniger bedeutender Qualifizierer, der den Teams folgt, um jemandem zu helfen, die Struktur zu verstehen, wenn dies erforderlich ist.

Auf diese Weise können Sie auch mit der Nice-Notation auf einen Wert in einer JSP zugreifen countiesByState[myState].

Benutzer-Avatar
Nrj

Was auch immer es am besten erklärt – In diesem Fall stateToCountyMap ist ok oder sonst countiesInStateMap kann verwendet werden.

Benutzer-Avatar
Charith de Silva

Ich würde es nennen mapStatesbyCountyCountdann wieder seinen etwas langen Variablennamen …

  • Hey, nicht einmal die Ungarn benutzen die ungarische Notation mehr! 😉

    – Hennig

    12. Juli 2011 um 8:15 Uhr

1143980cookie-checkWie benenne ich eine HashMap in Java?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy