Post

Java에서 Python처럼 다중 리턴 값 처리하기: Pair 활용법

두가지 값을 리턴 할 수 있을까 ?


python 에서는 이런 문법이 가능하다!

1
2
3
4
def get_sum_and_mul(num1, num2):
	return num1 + num2, num1 * num2

sum_result, mul_result = get_sum_and_mul(3, 5);

이렇게 2개의 리턴값을 한번에 받을 수 있다. 물론 3개 4개도 가능하다. Java 에서도 가능할까 ??

이번에 cache를 도입하게 되면서 이런 경우가 생겼다.

DB를 열심히 뒤져 온 다음에 오랜 시간 (50ms 이상) 처리 후에 가져 올 수 있는 결과 A 가 필요했다. 그리고 또 같은 값을 DB 로 부터 열심히 가져온 다음 (앞선 DB값과 정확히 같다) 또 오랜 시간 처리후 나오는 결과 B 를 caching 하고 싶었다. 두가지 method 를 따로 캐싱하기에는 그럼 똑같은 DB값을 2번 가져와야하고, DB결과를 가져오기에는 A, B 를 도출해내는 작업이 오래 걸렸다. 따라서 return 을 2개 하는 방법이 필요했다! 그래서 python 처럼 return 을 2개 하는 방법을 찾고 싶었지만 정답은 없었다.. 다만 비슷하게 하는 방법은 아래와 같다!

Pair


Pair는 단 한쌍의 key 그리고 value 를 가진다. 아래처럼 getKey getValue 로 두가지 값을 사용 할 수 있다!

1
2
3
4
5
6
public Pair<String, Integer> pairTesting() {
	Pair<String, Integer> pair = new Pair<>("Hello", 42);
	String key = pair.getKey();
	Integer value = pair.getValue();
	return pair;
}
This post is licensed under CC BY 4.0 by the author.

© 병욱. Some rights reserved.