Conversation
| } | ||
| }; | ||
|
|
||
| TreeSet<Task> prioritizedTasks = new TreeSet<>(comparator); |
There was a problem hiding this comment.
TreeSet стоит вынести в поле класса,
при добавлении тасок, можно было бы записывать их в TreeSet
то есть getPrioritizedTasks возвращал бы уже готовую коллекцию
при обновлении тасок (методы update) стоит учитывать, что время старта может изменяться.
чтобы сортировка в tree set происходила, нужно удалять объект и добавлять обратно
There was a problem hiding this comment.
Да, согласен с вами! Поправил! Благодарю!
| } | ||
|
|
||
| @Override | ||
| public TreeSet<Subtask> getPrioritizedSubtasks() { |
There was a problem hiding this comment.
В тз явно не отметили момент про одну коллекцию,
но все таки идея была, что будет TreeSet<Task>, в котором и таски и саб-таски
Отсортируйте все задачи по приоритету — то есть по startTime.
Напишите новый метод getPrioritizedTasks, возвращающий
список задач и подзадач в заданном порядке.
| } | ||
|
|
||
| @Override | ||
| public TreeSet<Epic> getPrioritizedEpics() { |
There was a problem hiding this comment.
по тз был только список из задач и подзадач
There was a problem hiding this comment.
Убрал не нужную реализацию!
| private final HashMap<Integer, Epic> epics = new HashMap<>(); | ||
| private final HistoryManager historyManager = Managers.getDefaultHistory(); | ||
| private int taskId = 0; | ||
| private final Comparator<Task> comparator = new Comparator<>() { |
There was a problem hiding this comment.
можно немного оптимизировать до такого вида
Comparator.comparing(Task::getStartTime);
еще можно допустить сортировку, если поле startTime == null
Comparator.comparing(Task::getStartTime, Comparator.nullsLast(Comparator.naturalOrder()));
| prioritizedTasks.addAll(tasksWithoutTimeNulls); | ||
| prioritizedTasks.addAll(subtasksWithoutTimeNulls); |
There was a problem hiding this comment.
в подсказке в тз есть такой блок
Если сортировать список заново каждый раз, сложность получения будет O(n∗log(n)).
Можно хранить все задачи заранее отсортированными с помощью класса TreeSet.
тут как раз происходит сборка treeset и сортировка при каждом вызове getPrioritizedTasks
There was a problem hiding this comment.
идея в том, чтобы наполнять prioritizedTasks по мере добавления задач в менеджер, то есть на каждый add таски или саб-таски делать add в prioritizedTasks тоже
при обновлении задач, также обновлять prioritizedTasks для пересортировки, в случае изменения startTime
при удалении задач, помимо мап и истории, их также нужно будет удалять из prioritizedTasks
в методах вида clear all tasks/subtasks/epics нужно будет, помимо прочего, очищать prioritizedTasks тоже
clear all tasks - удалять из tree set только таски
clear all subtasks - удалять из tree set все саб-таски
clear all epics - удалять из tree set все саб-таски
There was a problem hiding this comment.
Убрал не нужный код! Оставил в выводе только фильтрацию nullовых startTime значений тасков
Выполнил ТЗ 8 спринта