как исправить статический универсальный метод, который получает массив объектов - PullRequest
1 голос
/ 26 марта 2019

У меня есть проблема, касающаяся написанной мной статической функции, которая получает универсальный массив Object, содержащий ключ и значение.Когда он находит ключи с одинаковым значением, он добавляет значения для этого ключа;Тем не менее, у меня есть проблемы при создании статической функции.Код выглядит следующим образом:

public static<K,V extends Number> void mapSumOfValues(/*Map<K,V> h,*/ DataObject<K, V> []dataarray) {
    Map<K,V> h = new HashMap<>();
    Integer sum = 0;
    for(DataObject<K,V> d: dataarray) {
        h.merge(d.getKey(), d.getValue().intValue(), Integer:: sum);
    }

Я получаю сообщение об ошибке:

Метод слияния (K, V, BiFunction) в типе Map не применим для аргументов (K, int, Integer :: sum)

1 Ответ

0 голосов
/ 26 марта 2019

Ваша функция слияния работает только для Integer, поэтому вам нужно Map<K, Integer>.

Map<K, Integer> h = new HashMap<>();
for (DataObject<K, V> d : dataarray) {
    h.merge(d.getKey(), d.getValue().intValue(), Integer::sum);
}
...