{"id":583,"date":"2005-03-04T08:55:00","date_gmt":"2005-03-04T15:55:00","guid":{"rendered":"http:\/\/kodegeek.com\/blog\/?p=583"},"modified":"2005-03-04T08:55:00","modified_gmt":"2005-03-04T15:55:00","slug":"echando-codigo-%c2%bfcomo-crear-una-clave-numerica-de-una-palabra","status":"publish","type":"post","link":"http:\/\/kodegeek.com\/blog\/2005\/03\/04\/echando-codigo-%c2%bfcomo-crear-una-clave-numerica-de-una-palabra\/","title":{"rendered":"Echando c\u00f3digo: \u00bfComo crear una clave num\u00e9rica de una palabra?"},"content":{"rendered":"<p>Suponga que tiene el siguiente problema: A usted le dan una lista de simbolos de la bolsa: <span style=\"font-style: italic;\">SUNW, IBM, RHAT<\/span> y le piden que los almacene internamente como una clave; Idealmente deber\u00edamos generar un identificador \u00fanico por cada palabra.<\/p>\n<p>Bueno, en Java podemos llamar al m\u00e9todo de la clase String llamado &#8216;hashcode&#8217;; Un hash no es m\u00e1s que una funci\u00f3n de transformaci\u00f3n que nos permite convertir una cosa en otra, usando un algoritmo conocido. En este caso logramos mapear nuestra cadena a un n\u00famero \u00fanico. Los Hashes no son perfectos, ya que pueden generar lo que se llaman colisiones (dos entradas producen el mismo hash) y es all\u00ed en donde entran varios algoritmos para manejar esos casos.<\/p>\n<p>Aqu\u00ed les dejo un c\u00f3digo que utiliza la implementaci\u00f3n interna de Java de &#8216;<span style=\"font-style: italic;\">hashcode<\/span>&#8216; y otro algoritmo el cual se aprovecha de la conversi\u00f3n de cada caracter en el objeto String a un char, para luego darle un peso dada su posici\u00f3n en la cadena (con lo cual obtenemos un n\u00famero \u00fanico).<\/p>\n<p>Usted debe tener mucho cuidado al escoger una funci\u00f3n Hash; Una buena funci\u00f3n es aquella que tiene pocas colisiones, y s\u00f3lo los matem\u00e1ticos pueden demostrar con estad\u00edstica si una funci\u00f3n es buena. Yo en su caso mejor y utilizo un algoritmo que ya haya sido probado por alguien con anterioridad.<\/p>\n<p>El c\u00f3digo:<\/p>\n<style type=\"text\/css\"><!-- .syntax0 { color: #000000; } .syntax1 { color: #cc0000; } .syntax2 { color: #ff8400; } .syntax3 { color: #6600cc; } .syntax4 { color: #cc6600; } .syntax5 { color: #ff0000; } .syntax6 { color: #9966ff; } .syntax7 { background: #ffffcc; color: #ff0066; } .syntax8 { color: #006699; font-weight: bold; } .syntax9 { color: #009966; font-weight: bold; } .syntax10 { color: #0099ff; font-weight: bold; } .syntax11 { color: #66ccff; font-weight: bold; } .syntax12 { color: #02b902; } .syntax13 { color: #ff00cc; } .syntax14 { color: #cc00cc; } .syntax15 { color: #9900cc; } .syntax16 { color: #6600cc; } .syntax17 { color: #0000ff; } .syntax18 { color: #000000; font-weight: bold; } .gutter { background: #dbdbdb; color: #000000; } .gutterH { background: #dbdbdb; color: #666699; } --><br \/><\/style>\n<p><\/p>\n<pre><span class=\"gutter\">   1:<\/span><span class=\"syntax3\">\/**<\/span><br \/><span class=\"gutter\">   2:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><br \/><span class=\"gutter\">   3:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">You<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">are<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">given<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">a<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">list<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">of<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Compay<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Ticker<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">symbols<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">You<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">want<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">to<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">save<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">them<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">as<\/span><br \/><span class=\"gutter\">   4:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">a<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">unique<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">code<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">on<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">a<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">data<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">structure<\/span><span class=\"syntax3\">.<\/span><br \/><span class=\"gutterH\">   5:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Hints<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">There<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">are<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">two<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">solutions<\/span><span class=\"syntax3\">,<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">one<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">implies<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">a<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">hash<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">and<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">other<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">an<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">array<\/span><br \/><span class=\"gutter\">   6:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@author<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Jose<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">V<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Nunez<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Z<\/span><br \/><span class=\"gutter\">   7:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@version<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">1<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">-<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">02<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">28<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">2005<\/span><br \/><span class=\"gutter\">   8:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">License<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">GPL<\/span><br \/><span class=\"gutter\">   9:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Blog<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">El<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Angel<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Negro<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">-<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">http<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">elangelnegro<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">blogspot<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">com<\/span><br \/><span class=\"gutterH\">  10:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span><br \/><span class=\"gutter\">  11:<\/span><span class=\"syntax8\">public<\/span> <span class=\"syntax10\">class<\/span> TickerCode <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  12:<\/span>   <br \/><span class=\"gutter\">  13:<\/span>        <span class=\"syntax3\">\/**<\/span><br \/><span class=\"gutter\">  14:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Command<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">line<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">entry<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">point<\/span><br \/><span class=\"gutterH\">  15:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@param<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">args<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">-<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">ignored<\/span><br \/><span class=\"gutter\">  16:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span><br \/><span class=\"gutter\">  17:<\/span>        <span class=\"syntax8\">public<\/span> <span class=\"syntax8\">static<\/span> <span class=\"syntax10\">void<\/span> <span class=\"syntax6\">main<\/span>(String [] args) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  18:<\/span>                String [] symbols <span class=\"syntax18\">=<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  19:<\/span>                        <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">RHAT<\/span><span class=\"syntax13\">\"<\/span>,<br \/><span class=\"gutterH\">  20:<\/span>                        <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">IBM<\/span><span class=\"syntax13\">\"<\/span>,<br \/><span class=\"gutter\">  21:<\/span>                        <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">SUNW<\/span><span class=\"syntax13\">\"<\/span>,<br \/><span class=\"gutter\">  22:<\/span>                        <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">MSFT<\/span><span class=\"syntax13\">\"<\/span>,<br \/><span class=\"gutter\">  23:<\/span>                        <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">TFSM<\/span><span class=\"syntax13\">\"<\/span><br \/><span class=\"gutter\">  24:<\/span>                <span class=\"syntax18\">}<\/span>;<br \/><span class=\"gutterH\">  25:<\/span>                <span class=\"syntax10\">int<\/span> len <span class=\"syntax18\">=<\/span> symbols.length;<br \/><span class=\"gutter\">  26:<\/span>                <span class=\"syntax8\">for<\/span> (<span class=\"syntax10\">int<\/span> i <span class=\"syntax18\">=<\/span> <span class=\"syntax5\">0<\/span>; i <span class=\"syntax18\">&lt;<\/span> len; i<span class=\"syntax18\">+<\/span><span class=\"syntax18\">+<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  27:<\/span>                        System.out.<span class=\"syntax6\">println<\/span>(<br \/><span class=\"gutter\">  28:<\/span>                        <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Code<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">for<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">symbol<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">'<\/span><span class=\"syntax13\">\"<\/span> <span class=\"syntax18\">+<\/span><br \/><span class=\"gutter\">  29:<\/span>                        symbols[i] <span class=\"syntax18\">+<\/span><br \/><span class=\"gutterH\">  30:<\/span>                        <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">'<\/span><span class=\"syntax13\">\"<\/span> <span class=\"syntax18\">+<\/span><br \/><span class=\"gutter\">  31:<\/span>                        <span class=\"syntax13\">\"<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">is<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">\"<\/span> <span class=\"syntax18\">+<\/span><br \/><span class=\"gutter\">  32:<\/span>                        <span class=\"syntax6\">getCodeArray<\/span>(symbols[i]) <span class=\"syntax18\">+<\/span><br \/><span class=\"gutter\">  33:<\/span>                        <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">,<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">\"<\/span> <span class=\"syntax18\">+<\/span><br \/><span class=\"gutter\">  34:<\/span>                        <span class=\"syntax6\">getCodeHash<\/span>(symbols[i])<br \/><span class=\"gutterH\">  35:<\/span>                        );<br \/><span class=\"gutter\">  36:<\/span>                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  37:<\/span>           <br \/><span class=\"gutter\">  38:<\/span>        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  39:<\/span>   <br \/><span class=\"gutterH\">  40:<\/span>        <span class=\"syntax3\">\/**<\/span><br \/><span class=\"gutter\">  41:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">The<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">formula<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">to<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">get<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">it<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">using<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">a<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Hash<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">and<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">a<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">String<\/span><span class=\"syntax3\">:<\/span><br \/><span class=\"gutter\">  42:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><br \/><span class=\"gutter\">  43:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">s<\/span><span class=\"syntax3\">[<\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">]<\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\">31<\/span><span class=\"syntax3\">^<\/span><span class=\"syntax3\">(<\/span><span class=\"syntax3\">n<\/span><span class=\"syntax3\">-<\/span><span class=\"syntax3\">1<\/span><span class=\"syntax3\">)<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">+<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">s<\/span><span class=\"syntax3\">[<\/span><span class=\"syntax3\">1<\/span><span class=\"syntax3\">]<\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\">31<\/span><span class=\"syntax3\">^<\/span><span class=\"syntax3\">(<\/span><span class=\"syntax3\">n<\/span><span class=\"syntax3\">-<\/span><span class=\"syntax3\">2<\/span><span class=\"syntax3\">)<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">+<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">+<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">s<\/span><span class=\"syntax3\">[<\/span><span class=\"syntax3\">n<\/span><span class=\"syntax3\">-<\/span><span class=\"syntax3\">1<\/span><span class=\"syntax3\">]<\/span><br \/><span class=\"gutter\">  44:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><br \/><span class=\"gutterH\">  45:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Where<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">s<\/span><span class=\"syntax3\">[<\/span><span class=\"syntax3\">n<\/span><span class=\"syntax3\">]<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">is<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">char<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">on<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">position<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">'<\/span><span class=\"syntax3\">n<\/span><span class=\"syntax3\">'<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">for<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">String<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">'<\/span><span class=\"syntax3\">s<\/span><span class=\"syntax3\">'<\/span><br \/><span class=\"gutter\">  46:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">'<\/span><span class=\"syntax3\">n<\/span><span class=\"syntax3\">'<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">is<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">length<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">of<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">String<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">'<\/span><span class=\"syntax3\">s<\/span><span class=\"syntax3\">'<\/span><br \/><span class=\"gutter\">  47:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">You<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">repeat<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">this<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">process<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">for<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">all<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">chars<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">on<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">String<\/span><span class=\"syntax3\">!<\/span><br \/><span class=\"gutter\">  48:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@param<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">symbol<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Simbol<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">to<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">convert<\/span><br \/><span class=\"gutter\">  49:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@return<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">int<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">The<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">code<\/span><br \/><span class=\"gutterH\">  50:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span><br \/><span class=\"gutter\">  51:<\/span>        <span class=\"syntax8\">private<\/span> <span class=\"syntax8\">static<\/span> <span class=\"syntax10\">int<\/span> <span class=\"syntax6\">getCodeArray<\/span>(String symbol) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  52:<\/span>                <span class=\"syntax10\">int<\/span> code <span class=\"syntax18\">=<\/span> <span class=\"syntax5\">0<\/span>;<br \/><span class=\"gutter\">  53:<\/span>                <span class=\"syntax10\">char<\/span> [] chars <span class=\"syntax18\">=<\/span> symbol.<span class=\"syntax6\">toCharArray<\/span>();<br \/><span class=\"gutter\">  54:<\/span>                <span class=\"syntax10\">int<\/span> len <span class=\"syntax18\">=<\/span> chars.length;<br \/><span class=\"gutterH\">  55:<\/span>                <span class=\"syntax8\">for<\/span> (<span class=\"syntax10\">int<\/span> i <span class=\"syntax18\">=<\/span> <span class=\"syntax5\">0<\/span>; i<span class=\"syntax18\">&lt;<\/span> len; i<span class=\"syntax18\">+<\/span><span class=\"syntax18\">+<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  56:<\/span>                        code <span class=\"syntax18\">+<\/span><span class=\"syntax18\">=<\/span> (chars[i]<span class=\"syntax18\">*<\/span><span class=\"syntax5\">31<\/span><span class=\"syntax18\">^<\/span>(len<span class=\"syntax18\">-<\/span>i));<br \/><span class=\"gutter\">  57:<\/span>                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  58:<\/span>                <span class=\"syntax8\">return<\/span> code;<br \/><span class=\"gutter\">  59:<\/span>        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutterH\">  60:<\/span>   <br \/><span class=\"gutter\">  61:<\/span>        <span class=\"syntax3\">\/**<\/span><br \/><span class=\"gutter\">  62:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Uses<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">internal<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">String<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">hashcode<\/span><br \/><span class=\"gutter\">  63:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@param<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">symbol<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Simbol<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">to<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">convert<\/span><br \/><span class=\"gutter\">  64:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@return<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">int<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">The<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">code<\/span><br \/><span class=\"gutterH\">  65:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span><br \/><span class=\"gutter\">  66:<\/span>        <span class=\"syntax8\">private<\/span> <span class=\"syntax8\">static<\/span> <span class=\"syntax10\">int<\/span> <span class=\"syntax6\">getCodeHash<\/span>(String symbol) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  67:<\/span>                <span class=\"syntax8\">return<\/span> symbol.<span class=\"syntax6\">hashCode<\/span>();<br \/><span class=\"gutter\">  68:<\/span>        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  69:<\/span>   <br \/><span class=\"gutterH\">  70:<\/span><span class=\"syntax18\">}<\/span><br \/><\/pre>\n<p>Una corrida de ejemplo:<\/p>\n<blockquote><p>[josevnz@XXX Ticker]$ javac TickerCode.java -d .<br \/>[josevnz@XXX Ticker]$ java TickerCode<br \/>Code for symbol &#8216;RHAT&#8217; is 9391, 2514153<br \/>Code for symbol &#8216;IBM&#8217; is 6690, 72276<br \/>Code for symbol &#8216;SUNW&#8217; is 10313, 2556843<br \/>Code for symbol &#8216;MSFT&#8217; is 9738, 2375924<br \/>Code for symbol &#8216;TFSM&#8217; is 9730, 2572364<\/p><\/blockquote>\n<p>Y se lo puede bajar de <a href=\"http:\/\/prdownloads.sourceforge.net\/elangelnegro\/Ticker.tar.gz?download\">aqu\u00ed<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Suponga que tiene el siguiente problema: A usted le dan una lista de simbolos de la bolsa: SUNW, IBM, RHAT y le piden que los almacene internamente como una clave; Idealmente deber\u00edamos generar un identificador \u00fanico por cada palabra. Bueno, en Java podemos llamar al m\u00e9todo de la clase String llamado &#8216;hashcode&#8217;; Un hash no <a class=\"read-more\" href=\"http:\/\/kodegeek.com\/blog\/2005\/03\/04\/echando-codigo-%c2%bfcomo-crear-una-clave-numerica-de-una-palabra\/\">[&hellip;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts\/583"}],"collection":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/comments?post=583"}],"version-history":[{"count":0,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts\/583\/revisions"}],"wp:attachment":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/media?parent=583"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/categories?post=583"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/tags?post=583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}