원래 PS 할 때 쓰던 언어가 C++ 이어서 pair 를 아주 요긴 하게 썼었는데 엄청 쉽게 좌표표현 등을 할 수 있었으니까.
vector<pair<int, int> > edge;
이런식으로 말이다.
근데 자바가 주언어가 되고나서도 쭉 C++ 로 문제를 풀어오다가 자바로 언어를 바꿔야겠다고 생각하고 문제를 풀려니까 저 pair 가 너무 쓰고 싶었다. 사실 구현해서 써도 된다.
class Pair {
Integer key;
Integer value;
public Pair(Integer key, Integer value) {
this.key = key;
this.value = value;
}
public Integer getKey() {
return key;
}
public Integer getValue() {
return value;
}
}
이렇게! 사실 두 가지의 값을 동시에 가지는 타입이 필요한 거니까 간단하게 구현할 수 있다. C++ 처럼 변수를 first. second 이렇게 써도되고 제너릭으로 구현해서 다양한 타입을 넣어 줄 수도 있다.
그래도 왠지 구현된걸 쓰고 싶은 라이브러리 종속 개발자의 맘.
찾았다
JavaFx 에 들어있다. 이 라이브러리들은 그전 까지는 필수 포함이 아니다가 1.8 버전부터는 번들로 포함되어있다. 그래서 보통 SDK 로 Java 1.8 버전을 쓰면 큰 문제 없이 쓸 수 있는 데 만약에 예전 버전 컴파일러를 쓰는 PS 사이트나 그런 환경에는 돌아가지 않을 수도 있다.
사용 법은 매우 쉽고 간단한데
List<Pair<Integer, Integer>> pairs = new ArrayList<>();
pairs.add(new Pair<>(1,2));
pairs.get(0).getKey();
pairs.get(0).getValue();
이건 List 에 Pair 를 사용한 예시인데 이렇게 쓰면 된다.
근데 Javafx 는 나중에 번들로 추가되었다고 해도 자바 기본 라이브러리가 아니다 그래서 Pair 말고 자바 util 에 있는 AbstractMap 안에 SimpleEntry 를 쓰면 더 나을 수 있다. 물론 이것도 1.6이상인가? 부터 지원함 :) 근데 Pair 는 간단하니까 구현해서 쓰자
끝!
'Java' 카테고리의 다른 글
[OOP] SRP 와 객체의 역할, 책임의 충돌 (1) | 2020.02.06 |
---|---|
[JAVA] PriorityQueue in Java (0) | 2019.12.21 |
[Java] 자바로 2차원 배열 2번째 element 까지 정렬하기, Comparator (0) | 2019.12.16 |
[OOP] 책임과 역할의 차이 그리고 타입의 구현 방법 (0) | 2019.12.15 |
[OOP] 객체, 추상화, 캡슐화 (0) | 2019.12.14 |