Print Friendly, PDF & Email

En esta ocasión les mostraré como realizar de 2 maneras diferentes la funcionalidad del join de JavaScript en Java.

Este artículo está pensado para JavaScripteros, pero seguro que a algún Javero también le podría sorprender. Y sí… ya sé lo que piensan…

Java no es JavaScript

Pero a mi nadie me va a decir que no puedo hacer lo mismo de Javascript en Java 😉

Definición del problema

Para probar la equivalencia, las soluciones que propongo deberán de poder servir para resolver el siguiente problema:

Dadas dos cadenas, concatenarlas y obtener una cadena sin duplicados ordenada alfabéticamente.

Javascript join

En Javascript la función join pertenece al prototipo de String y se encarga de unir un arreglo en una cadena con los delimitadores intermedios que se especifiquen.

La implementación del código de prueba en javascript sería algo como:

function longest(s1, s2) {
  return Array.from(new Set((s1 s2).split("").sort())).join("");
}

 

Implementación del join de JavaScript en Java

Si usas Java 8 hallarás muy útil la función join de la clase String, así como el uso de los streams (del API de stream por supuesto).

import java.util.Arrays;
import java.util.stream.Collectors;

/**
 * Created by Javatlacati on 21/10/2016.
 */
public class TwoToOne {
    public static String longest(String s1, String s2) {
        return String.join("",Arrays.stream((s1   s2).split("")).distinct().parallel().sorted().collect(Collectors.toList()));
    }
}

Otra forma es usar la función join de la clase StringUtils

import com.sun.deploy.util.StringUtils;

import java.util.Arrays;
import java.util.stream.Collectors;

/**
 * Created by Javatlacati on 21/10/2016.
 */
public class TwoToOne {
    public static String longest(String s1, String s2) {
        return StringUtils.join(Arrays.stream((s1   s2).split("")).distinct().parallel().sorted().collect(Collectors.toList()), "");
    }
}

El inconveniente de esta implementación es que usa una de las clases internas de sun, que ellos crearon experimentalmente para realizar algunas tareas, y en un futuro podría desaparecer.

Entre algunas de las ventajas de las implementaciones del join de JavaScript que realizamos en Java podemos notar que acepta tanto arreglos como colecciones (del API de colecciones por supuesto).

Leave a Reply

Your email address will not be published. Required fields are marked *