Java プログラミングにおけるペアの利用

JavaJavaBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

ペアは、キー用のフィールドと値用のフィールドの2つから構成される、ペアになったデータを格納する方法です。Javaでは、ペアはメソッドから複数の値を返すための素晴らしい方法です。Javaでペアを使用する方法はたくさんあります。この実験では、コード例を用いてJavaでペアをどのように使用するかについて段階的なガイダンスを提供します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ConcurrentandNetworkProgrammingGroup(["Concurrent and Network Programming"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java/BasicSyntaxGroup -.-> java/output("Output") java/DataStructuresGroup -.-> java/arrays("Arrays") java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/class_methods("Class Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/constructors("Constructors") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/generics("Generics") java/FileandIOManagementGroup -.-> java/io("IO") java/ConcurrentandNetworkProgrammingGroup -.-> java/working("Working") subgraph Lab Skills java/output -.-> lab-117976{{"Java プログラミングにおけるペアの利用"}} java/arrays -.-> lab-117976{{"Java プログラミングにおけるペアの利用"}} java/collections_methods -.-> lab-117976{{"Java プログラミングにおけるペアの利用"}} java/classes_objects -.-> lab-117976{{"Java プログラミングにおけるペアの利用"}} java/class_methods -.-> lab-117976{{"Java プログラミングにおけるペアの利用"}} java/constructors -.-> lab-117976{{"Java プログラミングにおけるペアの利用"}} java/generics -.-> lab-117976{{"Java プログラミングにおけるペアの利用"}} java/io -.-> lab-117976{{"Java プログラミングにおけるペアの利用"}} java/working -.-> lab-117976{{"Java プログラミングにおけるペアの利用"}} end

Javaクラスを作成する

次のコマンドを使用して新しいJavaクラスを作成します。

cd ~/project && touch PairsInJava.java

JavaFX.UtilパッケージのPairクラスを実装する

JavaFXには、ペアを扱うために使用できる組み込みの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クラスを使用して2つのペアを作成し、それぞれのペアのkeyvalueを出力しています。

コードをコンパイルして実行するには、次のコマンドを実行します。

javac PairsInJava.java && java PairsInJava

Javaでペアを作成するためのオブジェクト配列を実装する

このステップでは、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]);
    }
}

上記のコードでは、オブジェクト配列を使用して2つのペアを作成し、それぞれのペアのkeyvalueを出力しています。

コードをコンパイルして実行するには、次のコマンドを実行します。

javac PairsInJava.java && java PairsInJava

ユーザ定義のペアクラスを実装する

このステップでは、Javaでペアを作成するためのユーザ定義のペアクラスをどのように実装するか学びます。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クラスを使用して不変なペアを作成する方法を学びます。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());
        // 値を設定できません
        // 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());

        // 不変ペアの値を設定できません
        // 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

まとめ

ペアは、相互にマッピング関係にある2つのデータ項目を格納するための簡単な方法です。この実験では、Javaにおけるペアの実装に異なるクラスとメソッドを使用しました。一般的な方法としては、Apache CommonsやVavrライブラリのような外部ライブラリを使用する方法、組み込みのJavaFX Pairクラスを使用する方法、カスタムペアクラスを作成する方法、およびオブジェクト配列を使用する方法が挙げられます。