У меня есть список конкретных объектов (собраний), которые мне нужно сгруппировать с помощью атрибута поля (java.util.Date) и поместить их в другой объект, который является контейнером для объектов типа сгруппированных собраний, принадлежащих к тому же месяцу /year.
Итак, я думаю о некотором коде, который получает список собраний, извлеченный из базы данных, и затем группирует их по месяцам / годам в определенных объектах MonthMeetings, для этого у меня есть код, использующий карту типа:
public static Map<String, MonthMeetings> groupMeetingsByMonth(
List<Meeting> meetings) {
// this is by default sorted by keys I'd like to have it sorted by using
// comparator on MonthMeetings objects, sorted by map values instead of
// keys like SortedMap default impl.
SortedMap<String, MonthMeetings> listMeetingsGroupedByMonth = new TreeMap<String, MonthMeetings>();
String labelMonthYear = "";
// reference to put in map.
MonthMeetings monthMeetings = null;
for (Iterator iterator = meetings.iterator(); iterator.hasNext();) {
// grab a meeting from list
Meeting meeting = (Meeting) iterator.next();
// get meeting date
Date dMeeting = meeting.getScheduledDate();
GregorianCalendar gCalendar = new GregorianCalendar();
gCalendar.setTime(dMeeting);
// simple method that build label in format MM_yyyy to use as map
// key.
labelMonthYear = generatesLabelMonthYear(gCalendar);
// check if MonthMeetings for specific month/year already exists in
// Map
monthMeetings = (MonthMeetings) listMeetingsGroupedByMonth
.get(labelMonthYear);
if (monthMeetings == null) {
// if not create MonthMeetings and add first meeting to it
monthMeetings = new MonthMeetings();
monthMeetings.addMeeting(meeting);
listMeetingsGroupedByMonth.put(labelMonthYear, monthMeetings);
} else {
// if does exist just add another meeting to it
monthMeetings.addMeeting(meeting);
}
}
return listMeetingsGroupedByMonth;
}
Этот фрагмент кода, я считаю, решает первую часть проблемы, группируя встречи по определенным объектам MonthMeetings.Теперь я с нетерпением жду, чтобы отсортировать эту карту по месяцам и месяцам.Я, вероятно, собираюсь попробовать реализовать сопоставимые объекты MonthMeetings, но тогда возник вопрос:
Как отсортировать карту по ее значениям, а не по ключам, когда это объекты?
Есть предложения?на этом?
tx заранее.