在 Java 函式中返回兩個值

Rashmi Patidar 2023年1月30日 2021年10月2日
  1. 在 Java 中使用 ArrayList 類返回多個值
  2. 在 Java 中使用 Pair 類返回兩個值
在 Java 函式中返回兩個值

在 Java 中,沒有將兩個值返回給函式的特權。解決多值返回帶來的問題,可以通過建立一個使用者定義的類來儲存輸出,或者使用內建的資料型別如 ArrayPair(如果只有兩個值需要返回),HashMapString Array

在 Java 中使用 ArrayList 類返回多個值

下面是演示返回兩個以上值的 Java 函式的小程式碼塊。

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

在上面的程式碼中,定義了一個方法來理解 Java 中的返回功能。callFunction 方法是從 main 函式或驅動程式類呼叫的;它是 JavaReturnTwoValues 類私有的。

在函式定義中,一個 ArrayList 物件最初使用兩個值進行例項化。公共類建構函式中允許使用這些值。使用 Arrays.asList() 函式允許內聯例項化,因此,在宣告時定義值。

靜態 asList 方法返回指定為引數的已定義列表。return 關鍵字後面總是接受一個引數。如果指定了多個引數,則會引發編譯時錯誤問題。

函式的值儲存在 list 區域性變數中。在區域性變數上,呼叫 forEach() 方法。這個指定的方法採用一個 Consumer 例項,一個具有單個 accept 程序的功能介面。這意味著它只消耗值或類,不返回任何東西。

因此,該語句從列表例項中按順序發出元素,而 forEach 方法使用這些元素在控制檯上列印值。:: 是一個方法引用運算子,類似於 lambda 表示式,a-> System.out.println(a)

上面程式碼塊的輸出如下所示。

Hi
Hello
World

在 Java 中使用 Pair 類返回兩個值

下面是使用使用者定義的 Pair 類來理解其功能的程式碼塊。

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

在上面的程式中,定義了兩個類:一個是儲存 main 或驅動程式函式的公共類,另一個是使用者定義的 Pair 類,用於在內部說明 pair 的功能。

驅動程式類具有呼叫函式和值操作過程的程式碼。callPairFunction 是一個私有方法,它返回一個 Pair 使用者定義的資料型別。該類被宣告為儲存一對值,即鍵及其值。

在主類下面是一個使用者定義的類,Pair<T1, T2>。它通常被定義為 Java 中 Generics 的概念並在其上工作。引數 T1T2 是通用資料型別,這意味著它們可以採用傳遞的資料型別的形式。在我們的例子中,字串被傳遞,所以 T1T2 變成了 String 型別。

該類有一個公共建構函式,它使用傳遞的值例項化區域性變數。使用公共 getKeygetValue 方法,在建構函式中例項化後返回鍵和值。

callPairFunction 方法中,使用 new 關鍵字返回 Pair 類的一個例項。該語句呼叫類的公共建構函式並設定鍵和值變數。返回的例項用於檢索 Pair 類左側和右側的值。

下面是上面程式碼中定義的輸出。

Key I am value

值得注意的是,org.apache.commons.lang3.tuple 包也提供了一個類似的內建類供使用。Pair 是包中存在的一個類,用於儲存現有的函式和操作以處理值。

通常可以使用預定義的類來避免編寫繁瑣的程式碼和建立新的 Pair 類的開銷。此處顯示了要注入專案的依賴關係。

<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

相關文章 - Java Function

相關文章 - Java Array