Renvoyer deux valeurs dans la fonction Java

Rashmi Patidar 12 octobre 2023
  1. Renvoyer plusieurs valeurs à l’aide de la classe ArrayList en Java
  2. Renvoyer deux valeurs à l’aide de la classe Pair en Java
Renvoyer deux valeurs dans la fonction Java

En Java, il n’y a pas de privilège pour renvoyer deux valeurs à une fonction. La résolution du problème lié aux retours multi-valeurs peut être résolue en créant une classe définie par l’utilisateur pour stocker la sortie ou en utilisant des types de données intégrés comme Array, Pair (s’il n’y a que deux valeurs à renvoyer ), HashMap et String Array.

Renvoyer plusieurs valeurs à l’aide de la classe ArrayList en Java

Vous trouverez ci-dessous le petit bloc de code pour illustrer les fonctions Java qui renvoient plus de deux valeurs.

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

Dans le code ci-dessus, une méthode est définie pour comprendre la fonctionnalité de retour en Java. La méthode callFunction est appelée depuis la fonction main ou la classe du pilote ; il est privé de la classe JavaReturnTwoValues.

Dans la définition de la fonction, un objet ArrayList est initialement instancié avec deux valeurs. Les valeurs sont autorisées dans le constructeur de classe publique. L’utilisation de la fonction Arrays.asList() permet l’instanciation en ligne, donc la définition des valeurs au moment de la déclaration.

La méthode statique asList renvoie une liste définie spécifiée en paramètres. Le mot-clé return accepte toujours un seul paramètre après lui. Si plus d’un paramètre est spécifié, cela génère des problèmes d’erreur de compilation .

Les valeurs de la fonction sont conservées dans la variable locale list. Sur la variable locale, la méthode forEach() est appelée. Cette méthode spécifiée prend une instance Consumer, une interface fonctionnelle avec un seul processus accept. Cela signifie qu’il ne consomme que des valeurs ou des classes et ne renvoie rien.

Ainsi, l’instruction émet les éléments séquentiellement à partir de l’instance de liste et la méthode forEach consomme les éléments pour imprimer les valeurs sur la console. Le :: est un opérateur de référence de méthode et est similaire à une expression lambda, a-> System.out.println(a).

La sortie du bloc de code ci-dessus est illustrée ci-dessous.

Hi Hello World

Renvoyer deux valeurs à l’aide de la classe Pair en Java

Vous trouverez ci-dessous le bloc de code qui utilise la classe Pair définie par l’utilisateur pour comprendre sa fonctionnalité.

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

Dans le programme ci-dessus, deux classes sont définies : l’une est la classe publique qui contient la fonction main ou pilote, et l’autre est la classe Pair définie par l’utilisateur pour illustrer la fonctionnalité de la paire en interne.

La classe du pilote a du code pour appeler le processus de manipulation de fonction et de valeur. La callPairFunction est une méthode privée qui renvoie un type de données Pair défini par l’utilisateur. La classe est déclarée pour stocker une paire de valeurs qui est la clé et sa valeur.

Sous la classe principale se trouve une classe définie par l’utilisateur, Pair<T1, T2>. Il est défini de manière générique et fonctionne sur le concept de Generics en Java. Les paramètres T1 et T2 sont des types de données génériques, ce qui signifie qu’ils peuvent prendre la forme du type de données qui est passé. Dans notre cas, la chaîne est passée, donc T1 et T2 deviennent du type String.

La classe a un constructeur public qui instancie les variables locales avec les valeurs passées. En utilisant les méthodes publiques getKey et getValue, la clé et la valeur sont renvoyées après avoir été instanciées dans le constructeur.

Dans la méthode callPairFunction, une instance de la classe Pair est renvoyée à l’aide d’un nouveau mot-clé. L’instruction appelle le constructeur public de la classe et définit les variables de clé et de valeur. L’instance renvoyée est utilisée pour récupérer les valeurs sur les côtés gauche et droit de la classe Pair.

Ci-dessous se trouve la sortie définie dans le code ci-dessus.

Key I am value

Notamment, le package org.apache.commons.lang3.tuple fournit également une classe intégrée similaire pour l’utilisation. Pair est une classe présente dans le package qui contient les fonctions et opérations existantes pour travailler sur les valeurs.

On peut souvent utiliser une classe prédéfinie pour éviter d’écrire le code encombrant et être surchargé de créer une nouvelle classe Pair. La dépendance à injecter dans le projet est affichée ici.

<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

Article connexe - Java Function

Article connexe - Java Array