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 🙂
Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit[...]
ADO.NET proporciona un puente entre los objetos creados en VB o C# y la base de datos MySQL asociada a la aplicación, a[...]
¿Qué es javaFX? JavaFX es una familia de productos y tecnologías de Sun Microsystems, adquirida por Oracle Corporation,[...]
Cuando programamos visualmente desde Netbeans, el IDE nos ayuda mucho al generar rapidamente código predefinido, sin emb[...]
SQLite. SQLite es un sistema de gestión de bases de datos relacional compatible con ACID, contenida en una relativamente[...]
¿Splash Screen? El splash screen o traducido al aspañol 😉 es una «Pantalla de bienvenida» que se muestra cuando se ejec[...]