📜  在Java中返回多个值

📅  最后修改于: 2022-05-13 01:55:38.967000             🧑  作者: Mango

在Java中返回多个值

Java不支持多值返回。我们可以使用以下解决方案来返回多个值。

如果所有返回的元素都是同一类型

我们可以在Java中返回一个数组。下面是一个演示相同的Java程序。

// A Java program to demonstrate that a method
// can return multiple values of same type by
// returning an array
class Test {
    // Returns an array such that first element
    // of array is a+b, and second element is a-b
    static int[] getSumAndSub(int a, int b)
    {
        int[] ans = new int[2];
        ans[0] = a + b;
        ans[1] = a - b;
  
        // returning array of elements
        return ans;
    }
  
    // Driver method
    public static void main(String[] args)
    {
        int[] ans = getSumAndSub(100, 50);
        System.out.println("Sum = " + ans[0]);
        System.out.println("Sub = " + ans[1]);
    }
}
输出:
Sum = 150
Sub = 50

如果返回的元素是不同的类型

使用 Pair(如果只有两个返回值)
我们可以在Java中使用 Pair 来返回两个值。

// Returning a pair of values from a function
import javafx.util.Pair;
  
class GfG {
    public static Pair getTwo()
    {
        return new Pair(10, "GeeksforGeeks");
    }
  
    // Return multiple values from a method in Java 8
    public static void main(String[] args)
    {
        Pair p = getTwo();
        System.out.println(p.getKey() + " " + p.getValue());
    }
}

如果有两个以上的返回值
我们可以将所有返回的类型封装到一个类中,然后返回该类的一个对象。

让我们看看下面的代码。

// A Java program to demonstrate that we can return
// multiple values of different types by making a class
// and returning an object of class.
  
// A class that is used to store and return
// three members of different types
class MultiDivAdd {
    int mul; // To store multiplication
    double div; // To store division
    int add; // To store addition
    MultiDivAdd(int m, double d, int a)
    {
        mul = m;
        div = d;
        add = a;
    }
}
  
class Test {
    static MultiDivAdd getMultDivAdd(int a, int b)
    {
        // Returning multiple values of different
        // types by returning an object
        return new MultiDivAdd(a * b, (double)a / b, (a + b));
    }
  
    // Driver code
    public static void main(String[] args)
    {
        MultiDivAdd ans = getMultDivAdd(10, 20);
        System.out.println("Multiplication = " + ans.mul);
        System.out.println("Division = " + ans.div);
        System.out.println("Addition = " + ans.add);
    }
}
输出:
Multiplication = 200
Division = 0.5
Addition = 30

对象类的返回列表

// Java program to demonstrate return of
// multiple values from a function using
// list Object class.
import java.util.*;
  
class GfG {
    public static List getDetails()
    {
        String name = "Geek";
        int age = 35;
        char gender = 'M';
  
        return Arrays.asList(name, age, gender);
    }
  
    // Driver code
    public static void main(String[] args)
    {
        List person = getDetails();
        System.out.println(person);
    }
}
输出:
[Geek, 35, M]