TObjectIntMap.get() возвращает 0, если ноль Trove

Я использую библиотеку trove для создания хэш-карт

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

Я использую класс TObjectIntMap, в котором мне пришлось использовать функцию get. Проблема в том, что 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") - ноль, а не ноль.

Я проверил их документацию по ссылке ниже, и это была ошибка, которую они решили. Так что на самом деле верните ноль вместо нуля, потому что int не может быть нулем.

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

Теперь мой вопрос: как отличить ноль от нуля в этом случае. Есть ли способ обойти эту проблему?

1 ответ

Решение

Попробуйте их метод containsKey. Если значение возвращается 0, используйте этот метод, чтобы проверить, содержит ли карта ключ - если это так, то значение ключа действительно равно 0. Если это не так, то ключ не установлен.

Другие вопросы по тегам