>>10
> return b (keyの1日前の項目1のデータ)
1日前、じゃなくて、一つ前の日付の項目1のデータ…… なのか。

例えば SortedSet<日付> s; Map<日付, List<項目>> m; とかして
m.get(key).get(1)
m.get(key).get(2)
m.get(s.headSet(key).last()).get(1)