Такой вопрос , почитал пару статей, не могу понять как работает здесь группировка , первый параметр вроде ясно, а во вторым туговато как то, не понимаю что нужно сделать.
Знаю как сделать без стримов, но уж сильно хочется с этим разобраться.
x -> x.getNumberTask() != 0 --это проверка, потому что все что без номера задачи равно 0
@Override
// Возвращает мапу (номер_задачи : количество_попыток_решить_ее).
public Map<Integer, Integer> getAllSolvedTasksAndTheirNumber(Date after, Date before) {
return listItemBetweenDates(after,before).stream()
.filter(x -> x.getNumberTask() != 0 & x.getEvent().equals(Event.SOLVE_TASK))
.collect(Collectors.groupingBy(Item::getNumberTask, <ВТОРОЙ ПАРАМЕТР>));
}package com.javarush.task.task39.task3913;
import java.util.Date;
public class Item {
private String ip;
private String name;
private Date date;
private Event event;
private int numberTask;
private Status status;
public Item(String ip, String name, Date date, Event event, int numberTask, Status status) {
this.ip = ip;
this.name = name;
this.date = date;
this.event = event;
this.numberTask = numberTask;
this.status = status;
}
public Item(String ip, String name, Date date, Event event, Status status) {
this.ip = ip;
this.name = name;
this.date = date;
this.event = event;
this.status = status;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Event getEvent() {
return event;
}
public void setEvent(Event event) {
this.event = event;
}
public int getNumberTask() {
return numberTask;
}
public void setNumberTask(int numberTask) {
this.numberTask = numberTask;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
@Override
public String toString() {
return "Item{" +
"ip='" + ip + '\'' +
", name='" + name + '\'' +
", date=" + date +
", event=" + event +
", numberTask=" + numberTask +
", status=" + status +
'}';
}
}
Или тебе принципиально через groupingBy? тогда проидется делать стрим в стриме - это заведомо менее эффективно.Впрочем, можно и через groupingBy - в том же классе Collectors есть подходящий метод. И он похож на то, что используется в варианте с Collectors.toMap