| ||||
un HashMap, es una colección de objetos, (como los Arrays), pero estos no tienen orden. Cada objeto se identifica mediante algun indentificador apropiado, por ejemplo un "uuid". El nombre HASH, hace referencia a una tecnica de organizacion de archivos llamada hashing o "dispersion" en el cual se almacenan registrso en una direccion del archivo que es generada por una funcion que se aplica sobre la llave del registro. El condepto en JAVA es similar, el HASHMAP posee un espacio de memoria, y cuando se guarda un objeto alli, se determina su direccion aplicandole una funcion a la llave que le indicamos. Por ejemplo: HashMap contenedor = new HashMap(); Object objeto = new Object(); String llave = new String("identificador de objeto"); contendor.add(llave,objeto);
__________________ http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux Última edición por TolaWare; 27/07/2006 a las 22:23 |
| |||
La biblioteca estándar de Java tiene dos tipos diferentes de objetos Map (que es una interfaz con cierta funcionalidad): HashMap y TreeMap. Ambos tienen la misma interfaz (dado que implementan Map), pero difieren claramente en la eficiencia. Si se observa lo que hace un get(), parecerá bastante lento hacerlo buscando a través de la clave, por ej. de un ArrayList. Es aquí donde un HashMap acelera considerablemente las cosas. En vez de hacer una búsqueda lenta de la clave, usa un valor especial denominado "código de tipo hash". Ésta es una manera de tomar cierta información del objeto en cuestión y convertirlo en un entero "relativamente único" para ese objeto. Todos los objetos de Java pueden producir un código de tipo hash, y HashCode() es un método de la clase raíz Object. Un HashMap toma un hashCode() del objeto y lo utiliza para localizar rápidamente la clave. Esto redunda en una mejora dramática de rendimiento. Espero que esta información (extraída del libro "Thinking in Java") te aclare un poco las cosas. En el libro incluso hay un ejemplo de como aplicar esta funcionalidad. Saludos |
| |||
Entonces, ¿ en qué casos usáis un ArrayList y en cuáles un HashMap ? ¿La diferencia está en el número de datos o en qué objetos guardar? Me interesa mucho este tema :) Gracias y un saludo. |
| ||||
dmorente, ambas estructuras de datos almacenan Objects y por defecto en Java todas las clases heredan de Object, es decir, puedes guardar cualquier objeto en cada una de ellas. El asunto es ¿cuándo emplear una u otra? Por ejemplo, usas un ArrayList cuando necesitas acceder al n-avo elemento. Haz cuenta de que un ArrayList es una columna de objetos en línea y que un HashMap es algo así como una sala llena de objetos dispersos al que llamas por su nombre (clave-valor). De más está decir que esas no son las únicas estructuras de datos que existen en Java. Tienes además Vector, LinkedList, TreeSet, TreeMap... etc, etc. y cada una de ellas tiene características que las diferencian del resto y que por ende son más óptimas que cualquier otra en cada caso. Espero que eso pueda ayudar.
__________________ El último TipdaR |
| ||||
en lo personal suelo usar mas un TreeMap para almacenar miles de objetos, peus el tiempo de recorrido es mucho menor al de un ArrayList, las listas las utilizo para manejar no mas de 500 elementos.. have funnnnn
__________________ Curso de Angular JS - Haremos una app de principio a fin |
| ||||
Re: Que es un HashMap y si alguien sabe un manual o donde puedo informarme Uso el HashMap pero marca una adverticia es algo asi: Type safety: The method put(Object, Object) belongs to raw type HashMap. References generic type HashMap<K,V> should be parameterized no hay error y funciona érfecto sinembargo me gustara saber que debo hacer para que no muestre es erro, supongo que debo ursar dos objetos iguales lo cual ya he hecho pero sigue esa advertencia. Gracias. |
| ||||
Re: Que es un HashMap y si alguien sabe un manual o donde puedo informarme mmmmm.... esto es por que la nueva version de JAVA necesitas especificarle el tipo de Objetos que almacenaras en la coleccion, esto lo haces en el contructor have funnnnnn
__________________ Curso de Angular JS - Haremos una app de principio a fin |
| ||||
Re: Que es un HashMap y si alguien sabe un manual o donde puedo informarme Generic Types Generic types have been widely anticipated by the Java Community and are now part of J2SE 5.0. One of the first places to see generic types in action is the Collections API. The Collections API provides common functionality like LinkedLists, ArrayLists and HashMaps that can be used by more than one Java type. The next example uses the 1.4.2 libraries and the default javac compile mode. Código PHP: The same example with the generified Collections library is written as follows: Código PHP: Generic types therefore enable an API designer to provide common functionality that can be used with multiple data types and which also can be checked for type safety at compile time. Designing your own Generic APIs is a little more complex that simply using them. To get started look at the java.util.Collection source and also the API guide. Have funnnnnn
__________________ Curso de Angular JS - Haremos una app de principio a fin |