@PunKHS

Как записать в Map максимальное значение для каждого из ключей?

Товарищи, подскажите!

По умолчанию в Map записывается последнее добавленное значение для данного ключа. Как записать максимальное значение для каждого из ключей ?
Map<String, Integer> maps = new HashMap<String, Integer>();
maps.put("A", 5);
maps.put("B", 2);
maps.put("A", 8);
maps.put("B", 7);
maps.put("A", 3);
maps.put("B", 3);

Должно получиться:
A = 8
B = 7
  • Вопрос задан
  • 431 просмотр
Решения вопроса 1
timych
@timych
Просто напишите свою реализацию вставки:

public class MyCustomMap extends HashMap<String, Integer> {

	@Override
	public Integer put(String key, Integer value) {
		
		Integer oldValue = get(key);

		if (oldValue == null || oldValue <  value) {
			return super.put(key, value);
		}
		return null;
	}
}


		Map<String, Integer> maps = new MyCustomMap();
		maps.put("A", 5);
		maps.put("B", 2);
		maps.put("A", 8);
		maps.put("B", 7);
		maps.put("A", 3);
		maps.put("B", 3);
		
		System.out.println(maps.get("A"));
		System.out.println(maps.get("B"));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Делаете свой метод put. В нем проверяете, если такого ключа нет - заносите сразу в мапу. Если есть - сравниваете где больше - в мапе или то что заносится. Если то, что заносится - заносите. Если в мапе - ничего не делаете.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы