-1

私は大きな疑問を持っています。たとえば、名前のリストと、異なる名前で同じになる可能性のある値があります.compareToを実行すると、リストの順序が番号で返されます。しかし、私の質問は、同じリストを持つコンピューターでアプリを実行すると、同じリストが返されるということですか?

compareTo は、実行するコンピューターに依存しますか?

注文を行うために他のパラメーターを使用するcompareToを実装する場合の解決策はわかっていますが、いずれにしても同じリストで返されるリストが異なる場合は、それが異なることを望みます。

4

1 に答える 1

2

あなたの質問を理解しているかどうかわかりません。2 つの項目の値が同じ場合、compareTo は 0 を返します (この場合は、この「数値」が同じであるため)。この関数 compareTo は、アルゴリズムがアイテムをソートする順序のみを定義し、ソート アルゴリズムによってどちらが最初になるかを決定します。まったく同じリストを使用して同じアルゴリズムを使用する場合、少なくともほとんどの一般的なアルゴリズムでは、ランダムではないため、出力は同じになります。しかし、リストまたはアルゴリズムを変更すると、結果がまったく異なる可能性があります。

したがって、それを避けるために、comapreTo 関数を再実装して、最初の値が同じ場合に備えて 2 番目の値を比較できます。たとえば、2 つの文字列 s1 と s2 に一致する 2 つの num: n1 と n2 がある場合は、次のようにする必要があります。

int comparison = n1.compareTo(n2);
if (comparison == 0){
    return s1.compareTo (s2));
}

もちろん、n1==n2 と s1==s2 の両方の場合、まだ問題があります。しかし、すべてのデータが同じであれば、オブジェクトは同等であるため、これは問題ではないのではないでしょうか? ;)

役立つことを願っています

于 2013-08-05T09:37:11.777 に答える