Posted by Marta on December 18, 2020 Viewed 7512 times
Hey there! In this tutorial, you will learn how to return multiple values in java. There are three main ways to return multiple values.
You can create a wrapper class that contains all the values your method should return. This way will fit if you need to return more than two values of different types. See this in action below:
public class Sample { public Bundle calculateSomething(){ // some calculations here Bundle result = new Bundle(); result.value1 = "3"; result.value2 = "Hey"; result.value3 = 3; return result; } class Bundle{ public String value1; public String value2; public int value3; } }
The method calculateSomething()
will return 3 values: value1, value2 and value3, each value can be of a different type.
I will recommend using encapsulation; in other words, mark the fields as private and create a getter method to access every field. In this case, I have declared the fields as public just for simplicity.
Another solution to how to return multiples values in java is producing a map. This solution will be appropriate if all values to return are of the same type. See below how this will work:
import java.util.HashMap; import java.util.Map; public class Sample { public Map<String, Integer> anotherCalculation(){ // some calculations here Map<String, Integer> result = new HashMap<>(); result.put("average",20); result.put("max", 50); result.put("min", 34); return result; } }
See below how to use the method created above to return multiple values:
Sample s = new Sample(); Map<String,Integer> results = s.anotherCalculation(); Integer averageResult = results.get("average");
Why returning a Map and not other collections, such as a List? In case all values to return are of the same type, we could use other collection, such as List, Array, etc. However, it will be challenging to identify the values. Using a map allows you to assign a label to each value. Therefore you could retrieve values out of the Map using this label.
Lastly, another possible solution is returning a Pair. This solution is only suitable if you need to return two values. Otherwise, one of the solutions above will be a better fit. See a code example of how to create and return a pair:
import javafx.util.Pair; public class Sample { public Pair<Long,Long> moreCalculation(){ // some calculations return new Pair<>(3L,45L); } }
You can access the Pair values using the methods getKey()
and getValue()
. See this in action below:
Sample s = new Sample(); Pair<Long,Long> results = s.moreCalculation(); Long firstResult = results.getKey(); Long secondResult = results.getValue();
To summarise, in this tutorial, we have seen how to return multiple values in java. In case you like to return multiples values of different types, the best option is returning a custom class. In case the values you want to return aren’t all the same type, returning a Map will fit well. And finally, you could produce a Pair if you only need to return two values.
I hope this tutorial was useful, and thank you so much for reading and supporting this blog. Happy Coding!
Runnable vs Callable – Find out the differences
What is a mutator method in Java?
Steady pace book with lots of worked examples. Starting with the basics, and moving to projects, data visualisation, and web applications
Unique lay-out and teaching programming style helping new concepts stick in your memory
Great guide for those who want to improve their skills when writing python code. Easy to understand. Many practical examples
Perfect Boook for anyone who has an alright knowledge of Java and wants to take it to the next level.
Excellent read for anyone who already know how to program and want to learn Best Practices
Perfect book for anyone transitioning into the mid/mid-senior developer level
Great book and probably the best way to practice for interview. Some really good information on how to perform an interview. Code Example in Java