본문 바로가기


Java

[Java] Java 에는 pair(c++) 가 외없데?

원래 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 이렇게 써도되고 제너릭으로 구현해서 다양한 타입을 넣어 줄 수도 있다.

그래도 왠지 구현된걸 쓰고 싶은 라이브러리 종속 개발자의 맘.

 

찾았다

Pair

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 는 간단하니까 구현해서 쓰자

 

끝!