gpt4 book ai didi

java - 如何改进这个填充日历网格的算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:25:48 27 4
gpt4 key购买 nike

我有一个可以呈现日历的 Grid,我得到了一个 ArrayList<CalendarEventEntity>其中包含事件。这些事件必须在网格中突出显示。

因为我必须自己填充网格,所以我有这样的东西:

for( loop through the days of the month ){
Calendar eventDate = event.getDate();
// look for the events in the calendar that matchs this day
for(CalendarEventEntity event : events) {
// if there are events in this specific day
if( eventDate.get(Calendar.YEAR) == calendarMonth.get(Calendar.YEAR) &&
eventDate.get(Calendar.MONTH) == calendarMonth.get(Calendar.MONTH) &&
eventDate.get(Calendar.DAY_OF_MONTH) == dayIndex ) {
// highlight it!!!
}
}

}

这工作正常,但速度太慢。所以我想加快速度!我在内部 for 之前添加了这个:

// ignore dates which does not make part of this month or year
if( eventDate.get(Calendar.YEAR) < calendarMonth.get(Calendar.YEAR) ||
eventDate.get(Calendar.MONTH) < calendarMonth.get(Calendar.MONTH) ||
eventDate.get(Calendar.DAY_OF_MONTH) != DateIdx ) {
continue;
}

// stop when processing dates which are higher than this month or year
if( eventDate.get(Calendar.YEAR) > calendarMonth.get(Calendar.YEAR) ||
eventDate.get(Calendar.MONTH) > calendarMonth.get(Calendar.MONTH)
|| eventDate.get(Calendar.DAY_OF_MONTH) != DateIdx ) {
break;
}

这让 if 更快了,但还是太慢了。我该如何改进这个算法?

最佳答案

问题是每天您都必须搜索每个事件以查找该日期的事件。您需要找到一种方法来仅搜索当天的事件,或者了解当天是否有事件。

您应该考虑使用 HashMap 来存储按日期索引的事件。然后您可以检查是否有相关日期的 HashMap 条目。您必须选择一种方式来表示一天,该方式足够通用以用作键。

当您必须深入了解某一天的详细信息并仅显示当天的事件时,这也会很方便。您不必每次要查找特定日期的事件时都搜索所有事件。

关于java - 如何改进这个填充日历网格的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3503194/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com