跪求一个Java算法问题
我的业务是这样的: 
          小弟我正在开发一个教务管理系统,其中有一个排课的功能:需要实现根据,具体的开课时间,每星期上课的时间和总的课次生成具体的上课日期。比如:   开课日期是星期三,是6月1日,每周上课是 
                                        周一8:00-10:00 
                                        周三8:00-10:00 
                                        周六10:00-12:00 
 一共是10次课,生成具体的班级上课时间是 
                                        6月1日8:00-10:00第一次课 
                                        6月4日10:00-12:00第二次课 
                                        6月6日8:00-10:00   第三次课 
                                        ......... 
                                        ......... 
 请教高手,如何实现?感激万分   
------解决方案--------------------学习
------解决方案--------------------没搞明白
------解决方案--------------------  不喜欢用“跪求”两个字!
------解决方案--------------------package com.test;   
 import 
java.text.ParseException; 
 import java.text.SimpleDateFormat; 
 import java.util.ArrayList; 
 import java.util.Calendar; 
 import java.util.Date; 
 import java.util.List;   
 public class Test5 {   
   public static void main(String[] args) throws 
ParseException {   
     List <Lesson>  list = new ArrayList <Lesson> ();   
     // 1表示星期日,7表示星期六 
     Lesson less1 = new Lesson(2,  "8:00——10:00 "); 
     Lesson less2 = new Lesson(4,  "10:00——11:00 "); 
     Lesson less3 = new Lesson(7,  "10:00——12:00 "); 
     list.add(less1); 
     list.add(less2); 
     list.add(less3); 
     // list最好能排序   
     // 总的上课次数 
     int total = 10; 
     // 开课日期,并非要与日期对应,可以是开课星的星期一或这个星的任何一天。 
     String startDate =  "2007-07-01 ";   
     SimpleDateFormat s = new SimpleDateFormat( "yyyy-MM-dd "); 
     Date d = s.parse(startDate); 
     teachList(list, total, d); 
   }   
   public static void teachList(List <Lesson>  list, int total, Date startDate) { 
     Calendar c = Calendar.getInstance(); 
     c.setTime(startDate); 
     c.set(Calendar.DAY_OF_WEEK, list.get(0).getWeek()); 
     if (c.getTimeInMillis()  < startDate.getTime()) { 
       c.add(Calendar.DATE, 7); 
     } 
     StringBuffer sb = new StringBuffer(); 
     int i = 1; 
     while (i  <= total) { 
       for (Lesson less : list) { 
         c.set(Calendar.DAY_OF_WEEK, less.getWeek()); 
         SimpleDateFormat s = new SimpleDateFormat( "yyyy年MM月dd日 E "); 
         sb.append( "第 ").append(i).append( "次课  "); 
         sb.append(s.format(c.getTime())).append( "  "); 
         sb.append(less.getTime()).append( "\n "); 
         ++i; 
         if (i >  total) { 
           break; 
         } 
       } 
       c.add(Calendar.DATE, 7); 
     } 
     sb.trimToSize(); 
     System.out.println(sb.toString()); 
   } 
 }   
 class Less