Я использую Microsoft Face API для обнаружения лиц и эмоций в Android.У меня есть TreeMap
, ключом которого является вероятность атрибута эмоции со значением, являющимся именем атрибута, например:
TreeMap<Double, String> treeMap = new TreeMap<>();
treeMap.put(person.faceAttributes.emotion.happiness, "Happiness");
treeMap.put(person.faceAttributes.emotion.anger, "Anger");
treeMap.put(person.faceAttributes.emotion.disgust, "Disgust");
treeMap.put(person.faceAttributes.emotion.sadness, "Sadness");
treeMap.put(person.faceAttributes.emotion.neutral, "Neutral");
treeMap.put(person.faceAttributes.emotion.surprise, "Surprise");
treeMap.put(person.faceAttributes.emotion.fear, "Fear");
(человек - это объект типа Face
)
То, что я хочу сделать, это ранжировать эти 7 эмоций от наиболее вероятных до наименее вероятных, но проблема в том, что размер treeMap
изменяется .Например, когда я выбираю получить атрибуты эмоций лица, которое улыбается , treeMap.size()
возвращает 2 .Когда я выбираю получение атрибутов эмоций лица, которое в основном нейтрально , treeMap.size()
возвращает 3 .
Кто-нибудь знает, почему такое поведение происходит, хотяЯ добавил 7 пар ключ-значение к treeMap
, используя treeMap.put()
?Я обнаружил, что пары ключ-значение, которые do существуют в treeMap
, являются наиболее вероятными эмоциями, но даже если другие атрибуты должны были быть 0, почему они все еще не добавляются в treeMap
.