Retornar dois valores na função Java

Rashmi Patidar 12 outubro 2023
  1. Retornar vários valores usando a classe ArrayList em Java
  2. Retorne dois valores usando a classe Pair em Java
Retornar dois valores na função Java

Em Java, não há privilégio de retornar dois valores para uma função. A resolução do problema que vem com retornos de vários valores pode ser resolvida criando uma classe definida pelo usuário para armazenar a saída ou usando tipos de dados integrados como Array, Pair (se apenas dois valores estiverem lá para retornar ), HashMap e String Array.

Retornar vários valores usando a classe ArrayList em Java

Abaixo está o pequeno bloco de código para demonstrar as funções Java que retornam mais de dois 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"));
  }
}

No código acima, um método é definido para entender a funcionalidade de retorno em Java. O método callFunction é chamado a partir da função main ou classe de driver; é privado para a classe JavaReturnTwoValues.

Na definição da função, um objeto ArrayList é instanciado inicialmente com dois valores. Os valores são permitidos no construtor da classe pública. O uso da função Arrays.asList() permite a instanciação em linha, portanto, a definição dos valores no momento da declaração.

O método estático asList retorna uma lista definida especificada como parâmetros. A palavra-chave return sempre aceita um único parâmetro depois dela. Se mais de um parâmetro for especificado, ele lançará problemas de erro de tempo de compilação.

Os valores da função são preservados na variável local list. Sobre a variável local, o método forEach() é chamado. Este método especificado leva uma instância de Consumer, uma interface funcional com um único processo de accept. Isso significa que ele apenas consome valores ou classes e não retorna nada.

Portanto, a instrução emite os elementos sequencialmente da instância da lista e o método forEach consome os elementos para imprimir os valores no console. O :: é um operador de referência de método e é semelhante a uma expressão lambda, a-> System.out.println(a).

A saída do bloco de código acima é mostrada abaixo.

Hi Hello World

Retorne dois valores usando a classe Pair em Java

Abaixo está o bloco de código que usa a classe Pair definida pelo usuário para entender sua funcionalidade.

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;
  }
}

No programa acima, existem duas classes definidas: uma é a classe pública que contém a função main ou driver, e a outra é a classe Pair definida pelo usuário para ilustrar a funcionalidade do par internamente.

A classe do driver possui código para chamar o processo de manipulação de função e valor. O callPairFunction é um método privado que retorna um tipo de dados definido pelo usuário Pair. A classe é declarada para armazenar um par de valores que é a chave e seu valor.

Abaixo da classe principal está uma classe definida pelo usuário, Pair<T1, T2>. É definido genericamente como e trabalha com o conceito de Genéricos em Java. Os parâmetros T1 e T2 são tipos de dados genéricos, o que significa que podem assumir a forma do tipo de dados que é passado. No nosso caso, a string é passada, então T1 e T2 passam a ser do tipo String.

A classe possui um construtor público que instancia as variáveis ​​locais com os valores passados. Usando os métodos públicos getKey e getValue, a chave e o valor são retornados após serem instanciados no construtor.

No método callPairFunction, uma instância da classe Pair é retornada usando uma nova palavra-chave. A instrução invoca o construtor público da classe e define as variáveis ​​de chave e valor. A instância retornada é usada para recuperar os valores nos lados esquerdo e direito da classe Pair.

Abaixo está a saída definida no código acima.

Key I am value

Notavelmente, o pacote org.apache.commons.lang3.tuple também fornece uma classe integrada semelhante para uso. Pair é uma classe presente no pacote que contém funções e operações existentes para trabalhar os valores.

Freqüentemente, pode-se usar uma classe predefinida para evitar a escrita de código complicado e sobrecarregar a criação de uma nova classe Pair. A dependência para injetar no projeto é mostrada aqui.

<dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-configuration2</artifactId>
            <version>2.7</version>
</dependency>
Rashmi Patidar avatar Rashmi Patidar avatar

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.

LinkedIn

Artigo relacionado - Java Function

Artigo relacionado - Java Array