Меня попросили создать тест для моей функции карты ниже.
static <U,V> List<V> map(Iterable<U> l, Function<U,V> f) {
List<V> hashes = new ArrayList<>();
for(U x : l) {
V y = f.apply(x);
hashes.add(y);
}
return hashes;
}
Тест, который я написал, берет список строк и создает список хэшей, который сравнивает сопоставленные хэши с хешами API. Функция hashCode ().
@Test
public void testMap() {
List<String> names = List.of("Mary", "Isla", "Sam");
List<Integer> hashes = fp.map(names, hashCode());
List<Integer> hashesComp = new ArrayList<>();
for (String name : names) {
int hash = name.hashCode();
hashesComp.add(hash);
}
Assertions.assertEquals(hashesComp, hashes);
}
Эта часть (в Eclipse)
List<Integer> hashes = fp.map(names, hashCode());
выдает мне ошибку:
The method map(Iterable<U>,
Function<U,V>) in the type fp is
not applicable for the arguments
(List<String>, int
Что я делаю не так? Разве List не является итеративным, и дженерики должны принимать типы, которые я использую?