Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Prečo nezmeniteľný String vypočítať jeho hodnotu hash ?

Komponenty Java aplikácie modelu kód ako objekty , s každý objekt má rozlohu zodpovednosti . Objekty poskytujú metódy na plnenie svojich povinností . Niektoré metódy v Jave sú vykonávané všetkými možnými objekty , vrátane reťazcov . Rámec Java umožňuje vývojárom používať určité typy ukladania dát , štruktúry , z ktorých niektoré využívajú hodnoty hash - kódu pre odkladanie vecí . Hash - code hodnota používa kód odkázať na konkrétny objekt , čo trieda kolekcia zaviesť účinné metódy pre ukladanie viacerých objektov v rámci programu . Java kód môže vypočítať hodnoty hash - kódu pre všetky objekty , vrátane reťazcov , ktoré sú nemenné . String Obsah

String premenné programov v jazyku Java sú objekty triedy String , ukladanie postupností textových znakov . To môže byť mätúce , pretože programy vytvoriť reťazcových premenných pomocou rovnaký typ štruktúry používanej pre premenné primitívneho typu , ako sú čísla . Nasledujúci kód vzorky demonštruje vytvorenie reťazcové premenné : String name = " John " ;

Program môže implementovať metódy triedy String na tejto premennej , z ktorých niektoré zahŕňajú zmeny na textový obsah . Metódy , ktoré mení obsah reťazca zvyčajne vráti nový reťazec , skôr než by sa zmenila existujúce reťazec . To je preto , že reťazce sú nemeniteľné , čo znamená , že akonáhle je vytvorený reťazec premennej , jej obsah nie je možné meniť . Programy , v ktorých obsah reťazca sa zdá byť zmenené , sú v skutočnosti vytvára nové reťazce nahradiť tie existujúce .
HashCode Funkcia

Všetky objekty v Jave poskytnúť " funkcie hashCode " . To je preto , že všetky triedy Java dedí z nadradenej triedy Object , ktorá poskytuje metódu " hashCode " . Nasledujúci kód vzorky demonštruje volanie metódy na premennú String : name.hashCode ( ) ;

Volanie tejto metódy spôsobí , že Java generovať hodnoty hash kódov pre reťazcové premenné špecifikované . Vytvorenie hodnoty hash kódov pre sláčikový objekt zahŕňa rovnaký postup , ako by ste použiť pre akýkoľvek objekt .
Výsledok

metódou " hashCode " výsledky v celočíselnú hodnotu , ktorá predstavuje objekt v pochybnosť . Toto číslo umožňuje tried Java optimalizovať na účinnosť pri ukladaní dátových hodnôt , a to najmä v spojení s triedou HashMap alebo iných Príbuzné kolekcie tried . Vo väčšine prípadov , Java programátor nemusí starať o podrobnostiach čísel používaných ako hash kódy pre položky , ako sú reťazce , ako sú triedy zbierky zvládnuť tento detail .
Žien a mužov

výsledok volanie " hashCode " na dve položky , ktoré sú rovné by mal byť rovnaký počet . Napríklad , ak by tieto dva sláčikové premenné generovať rovnaký hash - code value : String someName = " John " ; String otherName = " John " ;

Ak dva objekty vrátiť skutočný výsledok pri použití v rámci rovná metódu , potom Java ich považuje za rovnaké , v tom prípade by mali viesť v rovnakom hash kódu . Napríklad nasledujúci kód bude mať za následok skutočné hodnoty : boolean areEqual = someName.equals ( otherName ) ;

To je typicky prípad, že ak sú dva reťazce rovnaké , budú vytvárať rôzne hodnoty hash kódu , ale to nie je zaručené . ( Pozri odkazy 1 , 2 , 3 )

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené