Returning Multiple values in Java

Course Curriculum

Returning Multiple values in Java

Returning Multiple values in Java

Java doesn’t support multi-value returns. We can use following solutions to return multiple values.

If all returned elements are of same type

We can return an array in Java. Below is a Java program to demonstrate the same.

// 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]);
}
}
Output:

Sum = 150
Sub = 50

If returned elements are of different types

Using Pair (If there are only two returned values)
We can use Pair in Java to return two values.

// Returning a pair of values from a function
import javafx.util.Pair;

class P_AI {
public static Pair<Integer, String> getTwo()
{
return new Pair<Integer, String>(10, "PrutordotAi");
}

// Return multiple values from a method in Java 8
public static void main(String[] args)
{
Pair<Integer, String> p = getTwo();
System.out.println(p.getKey() + " " + p.getValue());
}
}
If there are more than two returned values
We can encapsulate all returned types into a class and then return an object of that class.

Let us have a look at the following code.

// 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);
}
}
Output:
Multiplication = 200
Division = 0.5
Addition = 30
Returning list of Object Class

// Java program to demonstrate return of
// multiple values from a function using
// list Object class.
import java.util.*;

class P_AI {
public static List<Object> getDetails()
{
String name = "Prutor";
int age = 35;
char gender = 'M';

return Arrays.asList(name, age, gender);
}

// Driver code
public static void main(String[] args)
{
List<Object> person = getDetails();
System.out.println(person);
}
}
Output:
[Prutor, 35, M]

(Next Lesson) How to start learning Java