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. Если это не так, то ключ не установлен.