Java 프로그래밍에서 쌍 (Pairs) 활용하기

JavaBeginner
지금 연습하기

소개

쌍 (Pairs) 은 키 (key) 와 값 (value) 의 두 필드로 구성된 쌍을 이루는 데이터를 저장하는 방법입니다. Java 에서 쌍은 메서드에서 여러 값을 반환하는 훌륭한 방법입니다. Java 에서 쌍을 사용하는 방법은 다양합니다. 이 랩 (lab) 에서는 코드 예제를 통해 Java 에서 쌍을 사용하는 방법에 대한 단계별 지침을 제공합니다.

Java 클래스 생성

다음 명령을 사용하여 새로운 Java 클래스를 생성합니다.

cd ~/project && touch PairsInJava.java

JavaFX.Util 패키지의 Pair 클래스 구현

JavaFX 는 쌍 (pair) 작업을 위해 사용할 수 있는 내장 Pair 클래스를 제공합니다. 이 단계에서는 Pair 클래스를 사용하여 쌍을 생성하고 조작하는 방법을 배웁니다. 다음 코드를 PairsInJava.java 파일에 추가하십시오.

import javafx.util.Pair;

public class PairsInJava {
    public static void main(String[] args) {
        Pair<String, Integer> p1 = new Pair<>("apple", 1);
        Pair<String, Integer> p2 = new Pair<>("banana", 2);
        System.out.println("p1=" + p1.toString());
        System.out.println("p2=" + p2.toString());
        System.out.println("key of p1=" + p1.getKey());
        System.out.println("value of p1=" + p1.getValue());
    }
}

위 코드에서 Pair 클래스를 사용하여 두 개의 쌍을 생성한 다음 각 쌍의 keyvalue를 출력합니다.

코드를 컴파일하고 실행하려면 다음 명령을 실행하십시오.

javac PairsInJava.java && java PairsInJava

Java 에서 객체 배열을 사용하여 Pair 생성 구현

이 단계에서는 Java 에서 객체 배열을 사용하여 쌍을 생성하는 방법을 배웁니다. 다음 코드를 PairsInJava.java 파일에 추가하십시오.

public class PairsInJava {
    public static void main(String[] args) {
        Object[] p1 = {"apple", 1};
        Object[] p2 = {"banana", 2};
        System.out.println("p1=" + p1[0] + "," + p1[1]);
        System.out.println("p2=" + p2[0] + "," + p2[1]);
    }
}

위 코드에서 객체 배열을 사용하여 두 개의 쌍을 생성한 다음 각 쌍의 keyvalue를 출력합니다.

코드를 컴파일하고 실행하려면 다음 명령을 실행하십시오.

javac PairsInJava.java && java PairsInJava

사용자 정의 Pair 클래스 구현

이 단계에서는 Java 에서 사용자 정의 pair 클래스를 구현하여 쌍을 생성하는 방법을 배웁니다. 다음 코드를 PairsInJava.java 파일에 추가하십시오.

class MyPair<T1, T2> {
    private T1 key;
    private T2 value;

    public MyPair(T1 key, T2 value) {
        this.key = key;
        this.value = value;
    }

    public T1 getKey() {
        return key;
    }

    public T2 getValue() {
        return value;
    }

    public void setKey(T1 key) {
        this.key = key;
    }

    public void setValue(T2 value) {
        this.value = value;
    }
}

public class PairsInJava {
    public static void main(String[] args) {
        MyPair<String, Integer> p1 = new MyPair<>("apple", 1);
        MyPair<String, Integer> p2 = new MyPair<>("banana", 2);
        System.out.println("p1=" + p1.getKey() + "," + p1.getValue());
        System.out.println("p2=" + p2.getKey() + "," + p2.getValue());
    }
}

위 코드에서 사용자 정의 클래스 MyPair를 정의하여 쌍을 생성한 다음 각 쌍의 keyvalue를 출력합니다.

코드를 컴파일하고 실행하려면 다음 명령을 실행하십시오.

javac PairsInJava.java && java PairsInJava

AbstractMap.SimpleEntry 클래스 구현

이 단계에서는 AbstractMap.SimpleEntry 클래스를 사용하여 쌍을 생성하는 방법을 배웁니다. 다음 코드를 PairsInJava.java 파일에 추가하십시오.

import java.util.AbstractMap;

public class PairsInJava {
    public static void main(String[] args) {
        AbstractMap.SimpleEntry<String, Integer> p1 = new AbstractMap.SimpleEntry<>("apple", 1);
        System.out.println("p1=" + p1.getKey() + "," + p1.getValue());
        p1.setValue(2);
        System.out.println("new p1=" + p1.getKey() + "," + p1.getValue());
    }
}

위 코드에서 AbstractMap.SimpleEntry 클래스를 사용하여 쌍을 생성한 다음 해당 값을 수정합니다.

코드를 컴파일하고 실행하려면 다음 명령을 실행하십시오.

javac PairsInJava.java && java PairsInJava

AbstractMap.SimpleImmutableEntry 클래스 구현

이 단계에서는 AbstractMap.SimpleImmutableEntry 클래스를 사용하여 불변 (immutable) 쌍을 생성하는 방법을 배웁니다. 다음 코드를 PairsInJava.java 파일에 추가하십시오.

import java.util.AbstractMap;

public class PairsInJava {
    public static void main(String[] args) {
        AbstractMap.SimpleImmutableEntry<String, Integer> p1 = new AbstractMap.SimpleImmutableEntry<>("apple", 1);
        System.out.println("p1=" + p1.getKey() + "," + p1.getValue());
        // cannot set the value
        // p1.setValue(2);
    }
}

위 코드에서 AbstractMap.SimpleImmutableEntry 클래스를 사용하여 불변 쌍을 생성합니다. 초기화된 후에는 keyvalue를 수정할 수 없습니다.

코드를 컴파일하고 실행하려면 다음 명령을 실행하십시오.

javac PairsInJava.java && java PairsInJava

javatuples Pair 클래스 구현

이 단계에서는 javatuples 라이브러리의 Pair 클래스를 사용하여 쌍을 생성하는 방법을 배웁니다. 다음 코드를 PairsInJava.java 파일에 추가하십시오.

import org.javatuples.Pair;

public class PairsInJava {
    public static void main(String[] args) {
        Pair<String, Integer> p1 = Pair.with("apple", 1);
        Pair<String, Integer> p2 = Pair.with("banana", 2);
        System.out.println("p1=" + p1.getValue0() + "," + p1.getValue1());
        System.out.println("p2=" + p2.getValue0() + "," + p2.getValue1());
    }
}

위 코드에서 javatuples 라이브러리의 Pair 클래스를 사용하여 각 쌍의 keyvalue를 생성하고 출력합니다.

코드를 컴파일하고 실행하려면 다음 명령을 실행하십시오.

javac -cp .:javatuples-1.2.jar PairsInJava.java && java -cp .:javatuples-1.2.jar PairsInJava

Vavr 라이브러리의 Tuple2 클래스 구현

이 단계에서는 Vavr 라이브러리의 Tuple2 클래스를 사용하여 쌍을 생성하는 방법을 배웁니다. 다음 코드를 PairsInJava.java 파일에 추가하십시오.

import io.vavr.Tuple2;

public class PairsInJava {
    public static void main(String[] args) {
        Tuple2<String, Integer> p1 = new Tuple2<>("apple", 1);
        System.out.println("p1=" + p1._1() + "," + p1._2());
    }
}

위 코드에서 Vavr 라이브러리의 Tuple2 클래스를 사용하여 쌍의 keyvalue를 생성하고 출력합니다.

코드를 컴파일하고 실행하려면 다음 명령을 실행하십시오.

javac -cp .:vavr-0.10.3.jar PairsInJava.java && java -cp .:vavr-0.10.3.jar PairsInJava

Apache Commons 라이브러리 구현

이 단계에서는 Apache Commons 라이브러리의 MutablePairImmutablePair 클래스를 사용하여 쌍을 생성하고 조작하는 방법을 배웁니다. 다음 코드를 PairsInJava.java 파일에 추가하십시오.

import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.MutablePair;

public class PairsInJava {
    public static void main(String[] args) {
        MutablePair<String, Integer> p1 = new MutablePair<>("apple", 1);
        ImmutablePair<String, Integer> p2 = new ImmutablePair<>("banana", 2);

        System.out.println("p1=" + p1.getLeft() + "," + p1.getRight());
        System.out.println("p2=" + p2.getLeft() + "," + p2.getRight());

        p1.setLeft("orange");
        p1.setRight(3);

        System.out.println("new p1=" + p1.getLeft() + "," + p1.getRight());

        // cannot set values for immutable pair
        // p2.setLeft("kiwi");

        p2 = p2.withLeft("kiwi");

        System.out.println("new p2=" + p2.getLeft() + "," + p2.getRight());
    }
}

위 코드에서 Apache Commons 라이브러리의 MutablePairImmutablePair 클래스를 사용하여 쌍을 생성한 다음 keyvalue를 수정합니다.

코드를 컴파일하고 실행하려면 다음 명령을 실행하십시오.

javac -cp .:commons-lang3-3.13.0.jar PairsInJava.java && java -cp .:commons-lang3-3.13.0.jar PairsInJava

요약

쌍 (Pairs) 은 서로 매핑 관계를 가진 두 개의 데이터 항목을 저장하는 간단한 방법입니다. 이 랩에서는 Java 에서 쌍을 구현하기 위해 다양한 클래스와 메서드를 사용했습니다. 몇 가지 일반적인 방법으로는 Apache Commons 또는 Vavr 라이브러리와 같은 외부 라이브러리 사용, 내장된 JavaFX Pair 클래스 사용, 사용자 정의 쌍 클래스 생성, 그리고 객체 배열 사용 등이 있습니다.