📜  用Java返回多个值

📅  最后修改于: 2020-03-30 04:47:11             🧑  作者: Mango

Java不支持多值返回。我们可以使用以下解决方案返回多个值。
我们可以用Java返回一个数组。下面是一个演示相同内容的Java程序。

// Java返回一个数组,同一类型的多个值
class Test {
    // 返回数组元素
    // 第一个元素a+b,第二个元素a-b
    static int[] getSumAndSub(int a, int b)
    {
        int[] ans = new int[2];
        ans[0] = a + b;
        ans[1] = a - b;
        // 返回数组元素
        return ans;
    }
    // 测试代码
    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返回两个值。

// 使用Pair
import javafx.util.Pair;
class GfG {
    public static Pair getTwo()
    {
        return new Pair(10, "芒果文档");
    }
    // 返回Java 8的多个值
    public static void main(String[] args)
    {
        Pair p = getTwo();
        System.out.println(p.getKey() + " " + p.getValue());
    }
}

如果返回的值多于两个,我们可以将所有返回的类型封装到一个类中,然后返回该类的一个对象。
让我们看看下面的代码。

// Java展示可以将所有返回的类型封装到一个类中,然后返回该类的一个对象
class MultiDivAdd {
    int mul; // 保存 乘法
    double div; // 保存 除法
    int add; // 保存 加法
    MultiDivAdd(int m, double d, int a)
    {
        mul = m;
        div = d;
        add = a;
    }
}
class Test {
    static MultiDivAdd getMultDivAdd(int a, int b)
    {
        // 返回多个不同的值
        return new MultiDivAdd(a * b, (double)a / b, (a + b));
    }
    // 测试代码
    public static void main(String[] args)
    {
        MultiDivAdd ans = getMultDivAdd(10, 20);
        System.out.println("乘法 = " + ans.mul);
        System.out.println("除法 = " + ans.div);
        System.out.println("加法 = " + ans.add);
    }
}

输出:

乘法 = 200
除法 = 0.5
加法 = 30

返回对象类列表List

// Java对象类列表List
import java.util.*;
class GfG {
    public static List getDetails()
    {
        String name = "芒果";
        int age = 35;
        char gender = 'M';
        return Arrays.asList(name, age, gender);
    }
    // 测试代码
    public static void main(String[] args)
    {
        List person = getDetails();
        System.out.println(person);
    }
}

输出:

[芒果, 35, M]