-1

私は必要ですTreeMap<Object, HGHandle>が、私のオブジェクトは Comparable ではなく、 common もありませんComparator<Object>

ツリー内の順序は、ツリー自体にのみ関連しています。ツリーに使用できる一般的なコンパレータはありますか?

情報: 一括インポートに特化した、データベースのようなライブラリの簡単なキャッシュ メカニズムを追加したいと考えています。これは非常にメモリを消費するタスクであるため、HashMap よりもツリーベースのマップを使用することを好みます。そのため、BulkImportCache はスペース効率が高くなり、必要に応じて拡大および縮小できます。

4

2 に答える 2

2

を使用できるようTreeMapにするには、 に格納する予定のインスタンスを比較できなければなりませんMap。マップに格納できるオブジェクトのさまざまなタイプを認識し、タイプに基づいてタイプ固有のコンパレータに委譲するコンパレータがある場合があります。ただし、どのようにスライスしても、比較メカニズムを提供する必要があり、Comparableオブジェクト以外には存在しません。

于 2013-05-14T12:02:19.117 に答える
-1

編集: コードが更新されました。

これは機能する可能性がありますが、チェックサム アルゴリズムを使用するには、オブジェクトが変更されていない必要があります。適切なテスト方法を見つけようとしています。

import  org.apache.commons.lang3.builder.HashCodeBuilder;

class HashCodeComparator implements Comparator<Object>{
    @Override
    public int compare(Object o1, Object o2) {
        final int dif = o1.hashCode() - o2.hashCode();
        if (dif == 0)
                if(o1.equals(o2))
                    return 0;
                else
                    return HashCodeBuilder.reflectionHashCode(o1) - HashCodeBuilder.reflectionHashCode(o2);
        else
            return dif;
    }
于 2013-05-14T11:55:39.377 に答える