private static void transposeList(List<FoodSchedule> schedule, int transpose) { // Get date from first event FoodSchedule foodSchedule = schedule.get(0); DateTime dateTime = foodSchedule.getDateTime(); // we need at least as many fridays as are scheduled int minFridays = schedule.size(); int year = dateTime.getYear(); String lastDate = "31/12/" + year; // Get fridays and remove count String startDate = dateTime.toString(FridayFinder.DATE_PATTERN); List<DateTime> fridaysOfYear = FridayFinder.getFridays(startDate, lastDate); // check that fridays is at least minFridays+transpose if (fridaysOfYear.size() < minFridays + transpose) { // add a new year DateTime lastDayOfCurrYear = FridayFinder.DATE_PATTERN.parseDateTime(lastDate); DateTime firstDayNextYear = lastDayOfCurrYear.plusDays(1); DateTime nextYearLastDay = lastDayOfCurrYear.plusYears(1); // get new list and add all fridaysOfYear.addAll(FridayFinder.getFridays(firstDayNextYear, nextYearLastDay)); } for (int i = 0; i < transpose; i++) { fridaysOfYear.remove(0); } // rebuild participant list for (int i = 0; i < schedule.size(); i++) { FoodSchedule fs = schedule.get(i); fs.setDateTime(fridaysOfYear.get(i)); } }