Я хочу знать, как проверять и извлекать элементы List
внутри Map
.Версия Java 8 - карта списков с условием
private Map<User, List<Offer>> shops = new ConcurrentHashMap<>(32);
//how to write this?
public List<Offer> getOffersOlderThan(int seconds){
return this.shops.values().stream().forEach(
x->x.stream()
.filter(y-> MyTime.currentTime.minusSeconds(seconds)
.isBefore(y.getOfferBegin()))
}
я уже пытался использовать filter
вместо первого forEach
, но это не сработало.
Я хочу, чтобы получить List
всех Offer
, который имеет Timestamp
перед currentTime - seconds
.
Как мне вернуть Java 8 в общий список? например:
public List<Offer> getOffersByUser(User u){
return this.shops.entrySet().stream().filter(x->x.getKey().getId()==u.getId())
.collect(List::new) //how to parameterize?
}
Как насчет использования 'this.shops.get (и) 'получить предложения данного пользователя? Вот что такое карта. –
forEach() возвращает void. Поэтому вы не можете вызвать какой-либо метод для того, что возвращает forEach(). Вам нужно прочитать некоторую документацию. –
@jbn AFAICT OP хочет предложения от * всех * пользователей – Bohemian