Devolver dos valores en la función Java
-
Devolver varios valores usando la clase
ArrayList
en Java -
Devolver dos valores usando la clase
Pair
en Java
En Java, no existe el privilegio de devolver dos valores a una función. La resolución del problema que viene con las devoluciones de valores múltiples se puede resolver creando una clase definida por el usuario para almacenar la salida o utilizando tipos de datos integrados como Array
, Pair
(si solo hay dos valores para devolver ), HashMap
y String Array
.
Devolver varios valores usando la clase ArrayList
en Java
A continuación se muestra el pequeño bloque de código para demostrar las funciones de Java que devuelven más de dos valores.
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
ArrayList<String> list = callFunction();
list.forEach(System.out::println);
}
private static ArrayList<String> callFunction() {
return new ArrayList<>(Arrays.asList("Hi", "Hello"));
}
}
En el código anterior, se define un método para comprender la funcionalidad de devolución en Java. El método callFunction
se llama desde la función main
o clase de controlador; es privado para la clase JavaReturnTwoValues
.
En la definición de la función, un objeto ArrayList
se instancia inicialmente con dos valores. Los valores están permitidos en el constructor de clases públicas. El uso de la función Arrays.asList()
permite la creación de instancias en línea, por lo tanto, definir los valores en el momento de la declaración.
El método estático asList
devuelve una lista definida especificada como parámetros. La palabra clave return
siempre acepta un solo parámetro después de ella. Si se especifica más de un parámetro, arroja problemas de error en tiempo de compilación
.
Los valores de la función se conservan en la variable local lista
. Sobre la variable local, se llama al método forEach()
. Este método especificado toma una instancia de Consumer
, una interfaz funcional con un único proceso de accept
. Significa que solo consume valores o clases y no devuelve nada.
Entonces, la declaración emite los elementos secuencialmente desde la instancia de la lista, y el método forEach
consume los elementos para imprimir los valores en la consola. El ::
es un operador de referencia de método y es similar a una expresión lambda, a-> System.out.println(a)
.
La salida del bloque de código anterior se muestra a continuación.
Hi Hello World
Devolver dos valores usando la clase Pair
en Java
A continuación se muestra el bloque de código que utiliza la clase Pair
definida por el usuario para comprender su funcionalidad.
public class Main {
public static void main(String[] args) {
Pair<String, String> pair = callPairFunction();
System.out.println(pair.getKey() + " " + pair.getValue());
}
private static Pair<String, String> callPairFunction() {
return new Pair<String, String>("Key", "I am value");
}
}
class Pair<T1, T2> {
private final T1 key;
private final T2 value;
public Pair(T1 first, T2 second) {
this.key = first;
this.value = second;
}
public T1 getKey() {
return key;
}
public T2 getValue() {
return value;
}
}
En el programa anterior, hay dos clases definidas: una es la clase pública que contiene la función main
o del controlador, y la otra es la clase Pair
definida por el usuario para ilustrar la funcionalidad del par internamente.
La clase de controlador tiene un código para llamar a la función y al proceso de manipulación de valores. callPairFunction
es un método privado que devuelve un tipo de datos Pair
definido por el usuario. La clase se declara para almacenar un par de valores que es la clave y su valor.
Debajo de la clase principal hay una clase definida por el usuario, Pair<T1, T2>
. Se define genéricamente como y trabaja sobre el concepto de Generics
en Java. Los parámetros T1
y T2
son tipos de datos genéricos, lo que significa que pueden tomar la forma del tipo de datos que se pasa. En nuestro caso, se pasa la cadena, por lo que T1
y T2
pasan a ser del tipo String
.
La clase tiene un constructor público que instancia las variables locales con los valores pasados. Usando los métodos públicos getKey
y getValue
, la clave y el valor se devuelven después de ser instanciados en el constructor.
En el método callPairFunction
, se devuelve una instancia de la clase Pair
utilizando una nueva palabra clave. La declaración invoca al constructor público de la clase y establece las variables clave y de valor. La instancia devuelta se usa para recuperar los valores en los lados izquierdo y derecho de la clase Pair.
A continuación se muestra la salida definida en el código anterior.
Key I am value
En particular, el paquete org.apache.commons.lang3.tuple
también proporciona una clase incorporada similar para su uso. Pair
es una clase presente en el paquete que contiene funciones y operaciones existentes para trabajar en los valores.
A menudo, se puede usar una clase predefinida para evitar escribir el código engorroso y tener la sobrecarga de crear una nueva clase Pair
. La dependencia para inyectar en el proyecto se muestra aquí.
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-configuration2</artifactId>
<version>2.7</version>
</dependency>
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedInArtículo relacionado - Java Function
- Devolver un método booleano en Java
- Escribir una función anónima en Java
- Tipo de retorno covariante en Java
- No devuelve nada de una función en Java
- Función virtual en Java
- Arreglar el error de Java - Invalid Method Declaration; Return Type Required