Zwei Werte in einer Java-Funktion zurückgeben

Rashmi Patidar 12 Oktober 2023
  1. Rückgabe mehrerer Werte mit der Klasse ArrayList in Java
  2. Zwei Werte mit der Klasse Pair in Java zurückgeben
Zwei Werte in einer Java-Funktion zurückgeben

In Java gibt es keine Berechtigung, zwei Werte an eine Funktion zurückzugeben. Die Lösung des Problems, das mit Rückgaben mit mehreren Werten einhergeht, kann gelöst werden, indem entweder eine benutzerdefinierte Klasse zum Speichern der Ausgabe erstellt wird oder integrierte Datentypen wie Array, Paar verwendet werden (wenn nur zwei Werte zurückgegeben werden sollen ), HashMap und String Array.

Rückgabe mehrerer Werte mit der Klasse ArrayList in Java

Unten ist der kleine Codeblock, um die Java-Funktionen zu demonstrieren, die mehr als zwei Werte zurückgeben.

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

Im obigen Code ist eine Methode definiert, um die Rückgabefunktionalität in Java zu verstehen. Die Methode callFunction wird von der Funktion main oder der Treiberklasse aufgerufen; es ist privat für die Klasse JavaReturnTwoValues.

In der Funktionsdefinition wird ein ArrayList-Objekt zunächst mit zwei Werten instanziiert. Die Werte sind im öffentlichen Klassenkonstruktor zulässig. Die Verwendung der Funktion Arrays.asList() ermöglicht die Inline-Instanziierung und damit die Definition der Werte zum Zeitpunkt der Deklaration.

Die statische Methode asList gibt eine definierte Liste als Parameter zurück. Das Schlüsselwort return akzeptiert immer einen einzelnen Parameter dahinter. Wenn mehr als ein Parameter angegeben wird, werden Fehler beim Kompilieren ausgegeben.

Die Werte der Funktion werden in der lokalen Variablen list gespeichert. Über die lokale Variable wird die Methode forEach() aufgerufen. Diese spezifizierte Methode benötigt eine Consumer-Instanz, eine funktionale Schnittstelle mit einem einzigen accept-Prozess. Das bedeutet, dass es nur Werte oder Klassen verbraucht und nichts zurückgibt.

Die Anweisung gibt also die Elemente sequentiell aus der Listeninstanz aus, und die Methode forEach konsumiert die Elemente, um die Werte auf der Konsole auszugeben. Der :: ist ein Methodenreferenzoperator und ähnelt einem Lambda-Ausdruck a-> System.out.println(a).

Die Ausgabe des obigen Codeblocks wird unten gezeigt.

Hi Hello World

Zwei Werte mit der Klasse Pair in Java zurückgeben

Unten ist der Codeblock, der die benutzerdefinierte Klasse Pair verwendet, um ihre Funktionalität zu verstehen.

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

Im obigen Programm sind zwei Klassen definiert: Eine ist die öffentliche Klasse, die die main- oder Treiberfunktion enthält, und die andere ist die benutzerdefinierte Klasse Pair, um die Funktionalität des Paares intern zu veranschaulichen.

Die Treiberklasse verfügt über Code zum Aufrufen des Funktions- und Wertmanipulationsprozesses. Die callPairFunction ist eine private Methode, die einen benutzerdefinierten Pair-Datentyp zurückgibt. Die Klasse wird so deklariert, dass sie ein Wertepaar speichert, das der Schlüssel und sein Wert ist.

Unterhalb der Hauptklasse befindet sich eine benutzerdefinierte Klasse Pair<T1, T2>. Es ist generisch definiert als und arbeitet nach dem Konzept von Generics in Java. Die Parameter T1 und T2 sind generische Datentypen, dh sie können die Form des übergebenen Datentyps annehmen. In unserem Fall wird der String übergeben, sodass T1 und T2 vom Typ String werden.

Die Klasse verfügt über einen öffentlichen Konstruktor, der die lokalen Variablen mit den übergebenen Werten instanziiert. Mit den öffentlichen Methoden getKey und getValue werden Schlüssel und Wert zurückgegeben, nachdem sie im Konstruktor instanziiert wurden.

In der Methode callPairFunction wird eine Instanz der Klasse Pair mit einem neuen Schlüsselwort zurückgegeben. Die Anweisung ruft den öffentlichen Konstruktor der Klasse auf und setzt die Schlüssel- und Wertvariablen. Die zurückgegebene Instanz wird verwendet, um die Werte auf der linken und rechten Seite der Pair-Klasse abzurufen.

Unten ist die Ausgabe, die im obigen Code definiert ist.

Key I am value

Bemerkenswert ist, dass das Paket org.apache.commons.lang3.tuple auch eine ähnliche eingebaute Klasse zur Verwendung bereitstellt. Pair ist eine im Paket vorhandene Klasse, die vorhandene Funktionen und Operationen enthält, um an den Werten zu arbeiten.

Man kann oft eine vordefinierte Klasse verwenden, um das Schreiben des umständlichen Codes zu vermeiden und den Aufwand für das Erstellen einer neuen Pair-Klasse zu haben. Hier wird die Abhängigkeit zur Injektion im Projekt angezeigt.

<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

Verwandter Artikel - Java Function

Verwandter Artikel - Java Array