sábado, 30 de diciembre de 2017

StringJoiner la nueva clase en Java 8


Java 8 se viene con todo y ahora vamos a ver la clase StringJoiner. Para que sirve? como su nombre lo indica se utiliza para construir una secuencia de caracteres separados por delimitadores, es decir, puede crear cadenas utilizando algunos delimitadores como "," (coma) y "-" (guión), etc. También podemos usar prefijos y sufijos para la secuencia de caracteres.

StringJoiner se encuentra en el paquete java.util y es una clase que es final y extiende de object.

Tiene 2 constructores:

  • StringJoiner(CharSequence delimiter). 
  • StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix). 
En el primero solo le pasamos el delimitador y en el segundo le pasamos el delimitador, el prefijo y sufijo de la cadena que vamos a formar. 

Entre los métodos más importantes podemos nombrar: 

  • StringJoiner add(CharSequence newElement) : Agrega un elemento
  • int length() : cantidad de caracteres. 
  • StringJoiner merge(StringJoiner other): une 2 secuencias. 
  • StringJoiner setEmptyValue(CharSequence emptyValue) : Definimos que valor va a retornar si la secuencia en vacía.  
  • String toString() : Retorna la cadena 
Veamos unos ejemplos: 

import java.util.*;

class Demo {

    public static void main(String args[]) {
        StringJoiner sj = new StringJoiner(",");//passing comma (,) as delimiter
        StringJoiner sj1 = new StringJoiner("-");//passing hyphen (-) as delimiter

        //Adding some string with comma(,) delimiter
        sj.add("suresh");
        sj.add("gurpreet");
        sj.add("piyush");
        sj.add("jagdish");

        System.out.println(sj);
        System.out.println();

        //Adding some string with hyphen(-) delimiter
        sj1.add("simran");
        sj1.add("siya");
        sj1.add("khusboo");
        sj1.add("barkha");

        System.out.println(sj1);
    }
}

Output: suresh,gurpreet,piyush,jagdish

             simran-siya-khusboo-barkha

Recordemos que System.out.println utiliza el metodo toString para imprimir un objeto. 

Veamos un ejemplo con sufijo y prefijo: 

import java.util.StringJoiner;

class Demo1 {
    public static void main(String args[]) {
        //passing , as delimiter and using "(" opening bracket as prefix and ")" closing bracket as suffix.
        StringJoiner sj = new StringJoiner(",","(",")");

        sj.add("blue");
        sj.add("red");
        sj.add("pink");
        sj.add("white");

        System.out.println(sj);
    }
}

Output: (blue,red,pink,white)

Veamos ahora un ejemplo con merge: 

import java.util.*;

class Demo3 {

    public static void main(String args[]) {
    //Creating first StringJoiner with delimiter and prefix and suffix
        StringJoiner sj1 = new StringJoiner(",","*","*");
        sj1.add("rose");
        sj1.add("lotus");

        System.out.println(sj1);

        //Creating second StringJoiner with delimiter and prefix and suffix
        StringJoiner sj2 = new StringJoiner(":","*","*");
        sj2.add("red");
        sj2.add("pink");

        System.out.println(sj2);

        //Now using merge() method for merging sj1 and sj2 joiners
        StringJoiner mrg = sj1.merge(sj2);
        System.out.println(mrg);
    }
}

Output: *rose,lotus*
              *red:pink*
              *rose,lous,red:pink*

Y por ultimo un ejemplo integrador: 

import java.util.*;

class Demo4 {

public static void main(String args[]){

    StringJoiner sj1 = new StringJoiner(",");

    /* if StringJoiner is empty then we can print a massage for this StringJoiner by using setEmptyValue(). */

    sj1.setEmptyValue("This is empty StringJoiner");
    System.out.println(sj1);
    System.out.println("add some values");

    //now adding some string by using add() method
    sj1.add("c++");
    sj1.add("html");

    System.out.println("added values is: "+sj1);

    //After adding values, let's count the length of string by using length() method

    int length = sj1.length();
    System.out.println("Length of SJ "+length);
    }
}

Output: This is empty StringJoiner
              add some values
              added values is: c++,html
              Length of SJ 8