0

我有一个数组,它返回特定月份的一组事件。有些月份可能在同一天有不同的事件。如何检测重复日期并在同一日期条目下显示两个事件,而不是两个单独的日期条目。

代码:

public void setListView(int month, int year, int dv) {

        events = new HolidayEvents();
        _calendar = Calendar.getInstance(Locale.getDefault());
        int totalDays = _calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

        for(int i = 1; i <= totalDays; i++){
            if(isHoliday(i, month, year, dv))
            {
                date = i + " " + getMonthForInt(month-1) + " " + year;

                for (Event event : events.eventDetails(this, month, i) 
                {
                       summaries.add(new Summary(date, event.eventdetails));

                } 
            }
        }
}

输出:

1 月 11 日有两个活动。所以它显示结果:

11 January 2013 
-Event Name-
11 January 2013
-Event Name-

我希望输出显示如下:

11 January 2013
-Event Name | Event Name-
4

2 回答 2

2

如果您将Events 存储在如下结构中:

Map<Date, List<Event>> eventMap= new HashMap<Date,List<Event>>();

您可以像这样获取给定日期的所有事件d

List<Event> events = eventMap.get(d);
于 2013-01-06T19:09:18.560 回答
0
ListMultiMap<Date,Event> eventMap = ArrayListMultiMap<Date,Event>.create();

对多图的放置会将事件添加到该日期的事件列表中。获取日期将返回包含该日期所有事件的列表。

您也可以使用常规地图手动执行此操作,尽管它有点麻烦。

http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/ArrayListMultimap.html

于 2013-01-06T19:11:02.510 回答