リストからすべてのオブジェクトを取得し、作成日にグループ化されたMap
に入れたいとします。つまり、マップはMap<String, List<MyObject>>
のようになります。 MyObject
オブジェクトには、作成日を格納するフィールドがあります。イテレータが空になるまでループを繰り返す
:
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;
}
しかし、これは間違っているが、それは最初の要素だけと同じ日を持っているすべてのものを取得しますので、私のマップ1つの要素のみを有することになる。私は真剣にこの問題を解決する方法がわからない
...任意の助けを事前に
感謝。
、それは同じ 'Iterator' –
は、私は古いものを削除せずに新しい値を追加することで、リストを更新し、指定されたキーのリストを取得する答え – suat
まず編集ですキーに対応する前のリストを上書きします。それは大丈夫ですか? – suat