在 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