1

Trove ライブラリを使用してハッシュ マップを作成しています

http://trove.starlight-systems.com/ 

私が使用しているクラスは TObjectIntMap で、関数 get を使用する必要がありました。問題は、2 つのケースの場合に get が 0 を返すことです。

1 - 指定されたキーの値がゼロの場合

2- キーが存在しない場合

たとえば、次のコードでは

TObjectIntMap<String> featuresMap = new TObjectIntHashMap<String>();

        if(String.valueOf(featuresMap.get("B")) == null)
            System.out.println("NULL");
        else 
            System.out.println("NotNull");


        System.out.println(featuresMap.get("B"));

プログラムは次のように出力します

1- NotNull: ゼロになるため。キー「B」は設定されていませんが、

2- ゼロ: featuresMap.get("B") の戻り値は null ではなくゼロです。

以下のリンクで彼らのドキュメントを確認しましたが、彼らが解決したのは間違いでした. したがって、int を null にすることはできないため、実際には null ではなくゼロを返します。

https://bitbucket.org/robeden/trove/issue/43/incorrect-javadoc-for-tobjectintmapget

今私の質問は次のとおりです。この場合、ゼロとヌルを区別する方法。この問題に対処する方法はありますか。

4

1 に答える 1

1

containsKeyメソッドを試してください。値が 0 に戻る場合は、そのメソッドを使用して、マップにキーが含まれているかどうかを確認します。含まれている場合、キーの値は実際には 0 です。含まれていない場合、キーは設定されていません。

于 2015-03-02T15:55:08.383 に答える