学校のロボット工学クラブでロボットをプログラミングしていて、オブジェクトをペアに編成する方法が必要です。このコードでは、2 つのソレノイド オブジェクトを使用して 1 つのソレノイドを伸ばしたり縮めたりします。多くのソレノイド オブジェクトを扱うので、これら 2 つのオブジェクトを「ペア」に配置して追跡したいと考えています。今では C++ の長いバックグラウンドを持っているため、これには構造体を使用するか、デフォルトの STL ペアを使用することをお勧めします。オブジェクトのペアを編成するには、どのようなデータ構造を使用すればよいですか? . 私は Java にかなり慣れていないので、単なるクラス以外に使用するのに適したものがあるかどうかに興味があります。
4 に答える
C++ では、クラスを使用してペアを簡単に表現できることに注意してください。Java にはクラスしかないため、これが唯一のオプションです。つまり、必要に応じて、独自のペア クラスを簡単に作成できます。このペアリングを表すだけでなく、ペア内の 2 つのオブジェクト間の正確な相互作用も定義するカスタム クラスが必要な場合もあります。
または、java.util.Map を使用できます。これは、ペアの要素間にある種のマッピング セマンティクスがある場合 (つまり、ペアが順序付けられている場合) に特に役立ちます。
それは単に「それらを一緒に保つ」以上のものだと思います。ソレノイド ペアの動作が異なる場合 (1 つが収縮し、もう 1 つが拡張する)、それを実装するには Pair 以外の新しいタイプが必要だと思います。適切な動作をするカスタム タイプ (例: SolenoidPair
) である必要があります。
独自のペア クラスをロールしたい場合:
public class Pair<X, Y> {
private final X x;
private final Y y;
public Pair(X x, Y y) {
this.x = x;
this.y = y;
}
public X getX() {
return x;
}
public Y getY() {
return y;
}
}
次のように使用します。
Pair<String, Integer> p = new Pair<String, Integer>("Heloo", 100);
そこにいくつかのセッターを投げたいと思うかもしれません!
しかし、データをカプセル化するためのより良い方法がおそらくあるようです。このペア クラスでより多くのロジックをラップし、より洗練された適切なメソッドを含む実際のオブジェクトを作成することをお勧めします。
Pair<L, R>
Apache Commons からの使用を検討してください。