Páginas

20/7/16

Que es un HashMap y cómo funciona

Que es un HashMap y cómo funciona.

Que es un HashMap y cómo funciona.




Pregunta fija para una entrevista, a veces trabajamos con HashMap pero no sabemos en realidad el concepto del mismo y menos como funciona internamente. Un HashMap es la implementación de la interface Map, esta interface es un tipo de
CollectionUna Collection es una interface que agrupa un conjunto de elementos.
que almacena datos asociando una
llave a un valorMap<key, value>. key= la llave. value= String, Integer, Boolean...
, esta interface sirve para muchas cosas y tiene ciertas caracteristicas que la definen, por ejemplo, no permite key duplicados, cada key tiene que estar asociado a un valor como máximo, si agregas un key que ya existe sobrescribe el valor del key anterior, solo permite Object types lo que quiere decir que no puedes poner un valor primitivo...
Volviendo al tema casi siempre se utiliza el HashMap como implementación del Map pero tiene sus cosas, por ejemplo, no garantiza que los elementos que vamos agregando estén ordenados, no deberíamos usarla en aplicaciones multithread porque no es synchronized, pero como todo en el mundo de Java, esto se puede lograr con unas líneas de código.

El HashMap funciona con el
principio del hashingEl principio se basa en asignar una ubicación para cierta key, dependiendo de una key determinada se le asigna un id único, en este caso se utiliza el método hashCode() el cual heredan todos los objetos en Java, algo importante de resaltar es que un objeto solo retornara un id, lo que quiere decir que si invocamos el hashcode con otro objeto idéntico devolverá el mismo id.
, como ya explique trabaja asignando una ubicación a una key con el método hashCode() de Java.

Comenzando desde el principio, así podemos crear un HashMap:
  // Un HashMap simple de llave String y valor Integer.
     HashMap<String, Integer> hashMapEdad = new HashMap<String, Integer>();
    
El constructor del HashMap que invocamos automáticamente le asigna

23/11/15

JLabel gradient background.

JLabel gradient background.

Realizar JLabel con color de fondo gradiente.




Algo que se ve muy bien en las aplicaciones de escritorio en Java, son los titulos con un color de fondo gradiente (JLabel Gradient Background), para hacerlo solo hay que sobreescribir el metodo void paintComponent(Graphics g) de la clase JComponent, recuerda que esta es la clase base para los componentes SWING.
Para lograr un color de fondo gradiente horizontal:
JLabel gradient background horizontal
JLabel Gradiente
Hay que implementar este codigo:
  JLabel label = new JLabel("...... DatoJava ......") {
   @Override
   protected void paintComponent(Graphics g) {
    Color colorFinal = new Color(255, 1, 1);
    
    Graphics2D graphics2d = (Graphics2D) g.create();
    graphics2d.setPaint(new GradientPaint(0, 0, getBackground(),
      getWidth(), 0, colorFinal));
    graphics2d.fillRect(0, 0, getWidth(), getHeight());
    graphics2d.dispose();
    
    super.paintComponent(g);
   }
  };
    
Para lograr un color de fondo gradiente vertical:
JLabel gradient background Vertical
JLabel Gradiente
Hay que implementar este codigo:
  JLabel label = new JLabel("...... DatoJava ......") {
   @Override
   public void setForeground(Color fg) {
    super.setForeground(fg.RED);
   }

   @Override
   protected void paintComponent(Graphics g) {
    LinearGradientPaint linearGradientPaint = new LinearGradientPaint(
      new Point(0, 10), new Point(0, getHeight()),
      new float[] { 0.240f, 0.250f }, new Color[] {
        Color.LIGHT_GRAY, Color.GRAY });

    Graphics2D graphics2d = (Graphics2D) g.create();
    graphics2d.setPaint(linearGradientPaint);
    graphics2d.fill(new Rectangle(0, 0, getWidth(), getHeight()));
    graphics2d.dispose();

    super.paintComponent(g);
   }
  };
    
Con esto podemos jugar y hacer varias cosas interesantes, por ejemplo:
JLabel gradient background Esquina
JLabel Esquina Gradiente
  JLabel label = new JLabel("...... DatoJava ......") {
   @Override
   protected void paintComponent(Graphics g) {
    LinearGradientPaint linearGradientPaint = new LinearGradientPaint(
      new Point(0, 10), new Point(10, getHeight()),
      new float[] { 0.240f, 0.250f }, new Color[] {
        Color.BLACK, getBackground() });

    Graphics2D graphics2d = (Graphics2D) g.create();
    graphics2d.setPaint(linearGradientPaint);
    graphics2d.fill(new Rectangle(0, 0, getWidth(), getHeight()));
    graphics2d.dispose();

    super.paintComponent(g);
   }
  };
    
JLabel gradient background Linea abajo
JLabel Linea Abajo
  JLabel label = new JLabel("...... DatoJava ......") {
   @Override
   protected void paintComponent(Graphics g) {
    LinearGradientPaint linearGradientPaint = new LinearGradientPaint(
      new Point(0, 25), new Point(0, getHeight()),
      new float[] { 0.240f, 0.250f }, new Color[] {
        getBackground(), Color.RED });

    Graphics2D graphics2d = (Graphics2D) g.create();
    graphics2d.setPaint(linearGradientPaint);
    graphics2d.fill(new Rectangle(0, 0, getWidth(), getHeight()));
    graphics2d.dispose();

    super.paintComponent(g);
   }
  };
    
JLabel gradient background linea abajo gradiente
JLabel Linea Abajo
  JLabel label = new JLabel("...... DatoJava ......") {
   @Override
   protected void paintComponent(Graphics g) {
    Color colorFinal = new Color(0, 0, 0);
    Graphics2D graphics2d = (Graphics2D) g.create();
    graphics2d.setPaint(new GradientPaint(0, 0, getBackground(),
      getWidth(), 0, colorFinal));
    graphics2d.fillRect(0, 25, getWidth(), getHeight());
    graphics2d.dispose();

    super.paintComponent(g);
   }
  };
    

20/11/15

JCalendar Java Swing Tutorial.

JCalendar Java Swing Tutorial

Tutorial del JCalendar con ejemplos, Java Swing.




JUnit Assume Tutorial. Que mejor manera de controlar la fecha que un usuario ingresa que con un calendario en donde con un simple clic ya obtengamos Año, Mes y Día, en Java Swing no trae por defecto un componente que facilite este comportamiento, así que por eso hay que descargar una librería externa llamada JCalendar, dicha librería tiene varias funcionalidades, podemos elegir desde un calendario la fecha completa, la fecha de hoy, elegir una fecha maxima o minima para seleccionar, elegir solo un día, año o mes... En fin en este Tutorial de JCalendar vamos hacer varios ejemplos con las funcionalidades que ofrece utilizando el IDE JBoss Developer Studio o eclipse.


17/11/15

Vaciar DefaultTableModel.

Vaciar DefaultTableModel.

Vaciar DefaultTableModel de un JTable. Quitar datos de un DefaultTableModel.




Cuando tenemos un JTable que utiliza DefaultTableModel muchas veces es necesario vaciar el JTable, en este caso hay que eliminar dato por dato del DefaultTableModel recorriéndolo de esta manera:
 int numDatos = defaultTableModel.getRowCount();
 for (int i = 0; i < numDatos; i++) {
  defaultTableModel.removeRow(0);
 }
 
Primero obtenemos el numero de datos que contiene el DefaultTableModel y después recorremos los datos con un bucle for para ir borrando el primer dato encontrado.

6/11/15

HSQLDB Tutorial

HSQLDB Tutorial.

Tutorial de HSQLDB con Java.




HyperSQL (HSQLDB) es una base de datos relacional, es hecha 100% en Java y corre en la maquina virtual de Java (JVM), hay muchas características que hacen de HSQLDB una base de datos atractiva para los desarrolladores, podemos usarla sin la necesidad de un servidor, para hacer pruebas en memoria utilizando la memoria RAM, es de código abierto, con solo importar el JAR a tu proyecto puedes comenzar a trabajar, bien sea para pruebas o para hacer funcionar tu aplicación en un ambiente de producción, claro que también trae su Database Manager en SWING para hacerle consultas a nuestras tablas por fuera de nuestra aplicación.

En este Tutorial vamos a centrarnos en el funcionamiento de HSQLDB desde Java. Lo que necesitamos es un IDE, en este caso yo utilizo JBoss Developer Studio o lo que es lo mismo eclipse y la última versión de HSQLDB que en este momento es la 2.3.3.


24/9/15

Enviar correo Java. JavaMail.

Enviar correo Java. JavaMail.

Tutorial para enviar correo desde Java. JavaMail.




Enviar correos desde Java es necesario en la mayoría de los sistemas, ya sea para utilizar la funcionalidad para notificar algún suceso, enviar alguna información, enviar correos masivos con promociones a tus clientes, enviar reportes adjuntos a quien sea necesario, puedes utilizar esto para hacer grandes cosas, en este Tutorial para enviar correos con JavaMail vamos hacer varios ejemplos básicos y así tu podrás utilizar la funcionalidad para el propósito que necesites. Para llevar a cabo este tutorial necesitas tener una cuenta de Gmail, desde la cual vamos a enviar los correos.