У меня есть задача, когда мне нужно реализовать некоторую функциональность для абстрактных методов. Идея заключается в том, чтобы использовать Java 8, но я своего рода новым для программирования с Java 8. Ниже абстрактный класс, который мне нужно реализовать:Функция фильтрации и перевода для пользовательской карты с Java 8
public abstract class SortedMap<K extends Comparable<K>, V> implements Iterable<Pair<K, V>>
{
/**
* Returns a map where all values have been translated using the function
* <code>f</code>.
*/
public abstract <C> SortedMap<K, C> map(Function<? super V, ? extends C> f);
/**
* Returns a map containing only the keys that satisfies
* the predicate <code>p</code>.
*/
public abstract SortedMap<K, V> filter(Predicate<? super K> p);
// ...
}
То, что я получил до сих пор (с Java 8) является:
public final class SortedMapImpl<K extends Comparable<K>, V> extends SortedMap<K,V>
{
private final Map<K, V> map;
private SortedMapImpl(Map<K, V> map)
{
this.map = new HashMap<K, V>(map);
}
@Override
public <C> SortedMap<K, C> map(Function<? super V, ? extends C> f)
{
// TODO Auto-generated method stub
return null;
}
@Override
public SortedMap<K, V> filter(Predicate<? super K> p)
{
final Map<K, V> filteredMap = map.entrySet()
.stream()
.filter(Predicate<? super Entry<K, V>> p)
.collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()));
return new SortedMapImpl<K, V>(filteredMap);
}
// ...
}
как вы можете видеть, что я не имею ни малейшего представления на данный момент, как реализовать метод отображения(), и метод фильтра, по меньшей мере, частично неправильно. Любая помощь очень ценится!
Спасибо! Я попытаюсь понять вашу реализацию фильтра, и, надеюсь, я смогу выяснить реализацию карты :) – yowazzupjoe
Небольшая коррекция, я считаю, что это должно быть '.filter (entry -> p.test (entry. getKey())) ' вместо ' .filter (запись -> predicate.test (entry.getKey())) ' – yowazzupjoe