Intereting Posts
Чтобы показать статическую html-страницу в android Запуск автономной библиотеки на Android L. Ошибка: поддерживаются только независимые исполняемые файлы (PIE) Какой макет использовать для создания формы ввода данных в android Fragment ReenterTransition не работает. Нужна помощь, разъясняющая различные переходы Фрагмента На некоторых устройствах Android отсутствует символ «Сердце» Вкладка «Барные панели Android» – проблемы с внутренним фрагментом trasaction System.currentTimeMillis () выдает неправильный вывод android Рекомендуемая практика для OpenGL ES 2.0? Как я могу заставить logcat на своем устройстве показывать журналы из всех процессов Исключение HTTP-подключения к Интернету App Widget не отображается в списке виджетов на устройствах Honeycomb до тех пор, пока Launcher не будет перезапущен Android Studio Debug и DDMS ANR Входная диспетчеризация Нужна помощь, чтобы заставить Android TextWatcher работать со входящими составными данными штрих-кода NullPointerException при использовании DatePicker setMaxDate () в DatePickerDialog

Как получить счетные значения из HashMap?

Как получить одинаковые значения из HashMAP?

HashMap<HashMap<String, Float>, String> HM=new HashMap<HashMap<String,Float>, String>(); HashMap<String, Float> h; h=new HashMap<String, Float>(); h.put("X", 48.0f); h.put("Y", 80.0f); HM.put(typeValuesHM, "Red"); h=new HashMap<String, Float>(); h.put("X", 192.0f); h.put("Y", 80.0f); HM.put(typeValuesHM, "Red"); h=new HashMap<String, Float>(); h.put("X", 192.0f); h.put("Y", 320.0f); HM.put(typeValuesHM, "Blue"); h=new HashMap<String, Float>(); h.put("X", 336.0f); h.put("Y", 560.0f); HM.put(typeValuesHM, "Blue"); 

Значения моего HashMap HM следующие:

 { {x=48,y=80}=Red,{x=192,y=80}=Red,{x=192,y=320}=Blue,{x=336,y=560}=Blue } 

Вот,

Я хочу подсчитать аналогичные значения в HashMap HM.

Т.е.) если я даю значение равным «красному», значит, я хочу получить count = 2. Если я даю значение равным «Синему», значит, я хочу получить count = 2.

Как получить одинаковые значения из HashMAP HM?

Solutions Collecting From Web of "Как получить счетные значения из HashMap?"

 int count = Collections.frequency(new ArrayList<String>(HM.values()), "Red"); 

Пронумеруйте набор записей и отбросьте все значения на вторую карту, первое значение карты станет ключом, значение будет считано:

 Map<String, Integer> result = new TreeMap<String, Integer>(); for (Map.Entry<Map<String, Float>> entry:HM.entrySet()) { String value = entry.getValue(); Integer count = result.get(value); if (count == null) result.put(value, new Integer(1)); else result.put(value, new Integer(count+1)); } 

Карта результатов для вашего примера должна выглядеть так:

 {"Red"=2, "Blue"=2} // values are stored as Integer objects 

Единственный способ сделать это – перебрать все элементы и подсчитать вхождения:

 for(String value: hm.values()) { if (value.equals(valueToCompare)) { count++; } } 
 int countValue(String toMatch) { int count = 0; for (String v : HM.values()) { if (toMatch.equals(value)) { count++; } } return count; } 

Кроме того, вероятно, слишком сложно использовать HashMap в качестве ключа, если вы просто сохраняете два значения. Встроенная Point использует int , но было бы непросто повторить ее с помощью float .

  Iterator<String> iter = HM.values().iterator(); while(iter.hasNext()) { String color = iter.next(); if(color.equals("Red")) { } else if(color.equals("Green")) { } else if(color.equals("Blue")) { } }