実際の型を知らなくても 2 つのオブジェクトを比較する方法
-
21-09-2019 - |
質問
1 つのリンクされたリストを実装する必要がありますが、オブジェクトを適切な位置に配置する必要があります。特定のクラスと組み合わせて使用する場合はすべて問題ありませんでしたが、ユニバーサルにしようとすると、insert メソッドの引数が Object になったときに問題が発生しました。Objectを正しい位置に入力したいときはCompareToメソッドを使えばいいのですが、Objectクラスにメソッドがありません!問題は、実際の型が分からない状態で 2 つのオブジェクト要素を比較する方法です。汎用クラス型を使用する必要があるでしょうか?しかし、CompareTo についてはどうでしょうか?それともElementクラスと組み合わせてそこにCompareToを配置するのでしょうか?それは実現可能だと思います。:)
public void insert(Object o)
{
Element el = new Element(o);
// initializing and setting iterators
while(!it.isDone() && ((it.current().getValue())).CompareTo(o)<0)
// it.current() returns Element of List
{
//move interators
}
//...
}
解決
次の 2 つのオプションがあります。
- 各オブジェクトのクラスを実装する
java.lang.Comparable
そこに各クラスの比較ロジックを記述し、受け入れるだけですComparable
の代わりにObject
そして電話するcompareTo()
- を作成します
comparator
リストのプロパティを作成し、構築時に設定します。具体的なコンパレータ(の実装)java.util.Comparator
) リストのこの特定のインスタンスに含まれるオブジェクトを比較する方法を知っている必要があります。
所属していません StackOverflow