Я хочу получить все объекты из списка и поместить их в Map
, сгруппированный по дате создания, что означает, что карта выглядит следующим образом: Map<String, List<MyObject>>
.У объекта MyObject
есть поле, в котором хранится дата его создания.
Я думал о выполнении вложенного цикла while, который выглядит следующим образом:
public Map<String, List<Expense>> getExpensesSorted(SortType type){
Map<String, List<Expense>> map = new HashMap<String, List<Expense>>();
List<Expense> expenses = getAllExpenses(budgetId).getExpenses()
.getList();
if (type.equals(SortType.DAY)) {
Iterator<Expense> expIter = expenses.iterator();
while (expIter.hasNext()) {
List<Expense> list = new ArrayList<Expense>();
Expense exp = (Expense) expIter.next();
list.add(exp);
String day = exp.getDate().format("YYYY-MM-DD");
expIter.remove();
while (expIter.hasNext()) {
Expense exp2 = (Expense) expIter.next();
if (exp2.getDate().format("YYYY-MM-DD").equals(day)) {
list.add(exp2);
expIter.remove();
}
}
map.put(day, expenses);
}
} else if (type.equals(SortType.WEEK)) {
...
} else if (type.equals(SortType.TYPE)) {
...
} else if (type.equals(SortType.CATEGORY)) {
...
}
return map;
}
Но это неправильно, этополучает только те, которые имеют тот же день, что и первый элемент, поэтому моя карта имеет только один элемент.
Я серьезно не знаю, как решить эту проблему ...
Заранее спасибо за любую помощь.