La clase hashMap es muy util para almacenar objetos de la forma ( Clave, Objeto ), donde Clave es un identificador único para el objeto que almacenamos en el hashMap, sin embargo cuando colocamos varios objetos de diferentes clases dentro del hashMap, al momento de recuperarlos debemos saber a que tipo de clase pertenecen, para esto podemos utilizar dos metodos.
Método #1: instanceof
OBJETO instanceof TIPO_DE_OBJETO
El operador instanceof nos permite conocer si un objeto pertenece a una clase determinada, devuelve como respuesta un boolean TRUE si pertenece y FALSE sino.
Método #2: equals
OBJETO.equals("NOMBRE OBJETO")
El operador equals, nos permite comparar objetos, sin embargo si comparamos OBJETO_1 con OBJETO_2, para obtener un resultado positivo, ambos objetos deberian ser exactamente iguales caso contrario nos devolvera FALSE, esto no nos sirve de mucho, asi que para realizar la comparación, debemos obtener y comparar el «nombre de clase» y no la clase en si con una cadena de texto, por ejemplo «JLabel», «JTextField», etc.
Para dejar las cosas mucho mas claras es mejor colocar un ejemplo de todo lo que se explicó.
La siguiente clase que se llama «objeto.java», imlementa 3 metodos, setObjeto() para agregar objetos a un hashMap y ademas dos métodos «metodo_instanceof()» y «metodo_equals()» los cuales implementa lo explicado anteriormente
import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * @web https://www.jc-mouse.net/ * @author Mouse */ public class objeto { private Map mapa = new HashMap(); public void setObjeto(String key, Object obj) { mapa.put(key, obj); } public void metodo_instanceof() { Iterator it = mapa.entrySet().iterator(); while (it.hasNext()) { Map.Entry e = (Map.Entry)it.next(); if(e.getValue() instanceof javax.swing.JTextField) System.out.println( e.getKey() + " : el objeto es un JTextField" ); else if(e.getValue() instanceof javax.swing.JLabel ) System.out.println( e.getKey() + " : el objeto es un JLabel" ); else System.out.println( e.getKey() + " : el objeto es 'desconocido' " ); } } public void metodo_equals() { Iterator it = mapa.entrySet().iterator(); while (it.hasNext()) { Map.Entry e = (Map.Entry)it.next(); if( e.getValue().getClass().getSimpleName().equals("JTextField")) System.out.println( e.getKey() + " : el objeto es un JTextField" ); else if( e.getValue().getClass().getSimpleName().equals("JLabel")) System.out.println( e.getKey() + " : el objeto es un JLabel" ); else System.out.println( e.getKey() + " : el objeto es 'desconocido' " ); } } }
Implementado esta clase tenemos por ejemplo:
objeto o = new objeto(); o.setObjeto("Objeto A", (new JTextField()) ); o.setObjeto("Objeto B", (new JLabel()) ); o.setObjeto("Objeto C", (new JTextArea()) ); System.out.println("por instanceof"); o.metodo_instanceof(); System.out.println("por equals"); o.metodo_equals();
Lo cual nos da como resultado:
por instanceof Objeto 1 : el objeto es un JTextField Objeto 2 : el objeto es un JLabel Objeto 3 : el objeto es 'desconocido' por equals Objeto 1 : el objeto es un JTextField Objeto 2 : el objeto es un JLabel Objeto 3 : el objeto es 'desconocido'
Espero le sea util a cualquiera 🙂
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
En posts anteriores hablamos sobre los metadatos y el porque son importantes en la Seguridad Informática, vimos el manej...
Continuando con el desarrollo de la aplicación (Parte 1), abrimos Netbeans y creamos un nuevo proyecto al que llamaremos...
Esta aplicacion permite escalar una imagen desde java sin perder las proporciones de la misma, utiliza SCALE_AREA_AVERAG...
Oi galera, en esta oportunidad les traigo una curiosidad que encontré por casualidad perdiendo el tiempo en Internet, se...
En un post anterior [Crear plantillas personalizadas para Netbeans] vimos una forma sencilla que tiene Netbeans para fac...
En un post anterior vimos como usar la herramienta XJC del JDK para generar clases java desde esquemas XSD (XML Schema D...
Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...
En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...
Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...
Google Bard la inteligencia artificial de Google se actualiza con una mejora que entra a competir con el resto de IAs y...