班上有37个人,每个人都要跟班上其他36个人一起吃饭,每次分3个人一组

求所有的分组可能 其中不可以重复
请用代码做出来


@Data
public class Group{

private int personA;

private int personB;

private int personC;

}

public class GroupTest {

    public static void main(String[] args) {
       // 集合模拟班级中的 37个人
       List<Integer> personList = new ArrayList<>();
       for (int i = 1;i<38;i++ ) {
          personList.add(i); 
       }       
       List<Group> groupList = new ArrayList<>();
       for (int i = 0; i<personList.size();i++) { 
                  for (int j = 0; j<personList.size();j++) {
                        for (int k = 0; k<personList.size();k++) {
                             Group group = new Group();
                             group.setPersonA(personList.get(i));
                             group.setPersonB(personList.get(j));
                             group.setPersonC(personList.get(k));
                             groupList.add(group);
                        }
                   }
       }       
       // 过滤掉分组中有重复的人的组合
       List<Group> groupListOne = groupList.stream().filter(t -> t.getPersonA()!=t.getPersonB() && t.getPersonA() != t.getPersonC() && t.getPersonB() != t.getPersonC()).collect(Collectors.toList());
    // 组合中排序
   List<Group> groupListTwo =  groupListOne.stream().map(t -> {
             int max=(t.getPersonA()>t.getPersonB()? t.getPersonA():t.getPersonB())>t.getPersonC()? (t.getPersonA()>t.getPersonB()? t.getPersonA():t.getPersonB()):t.getPersonC();
            int min=(t.getPersonA()<t.getPersonB()? t.getPersonA():t.getPersonB())<t.getPersonC()? (t.getPersonA()<t.getPersonB()? t.getPersonA():t.getPersonB()):t.getPersonC();
            Group group = new Group();
            group.setPersonA(min);
            group.setPersonB(t.getPersonA()+t.getPersonB()+t.getPersonC()-min-max);
            group.setPersonC(max);
            return group ;
    }).collect(Collectors.toList());
        // 最终的结果
        Set<Group> result = new HashSet<>(); 
        result.addAll(groupListTwo); 
        System.out.println("一共有" + result.size() + "种分组,如下:");
        for (Group group: result ) { 
            System.out.println(group.getPersonA()+"-"+group.getPersonB()+"-"+group.getPersonC()); 
        } 
    }
}

  1. 37个人,每一个人都要和其他36个人吃饭,需要完成37×36=1332次吃饭任务
  2. 每一轮,只能配出12组共36人完成吃饭任务,留下一个人轮空,36×2=72次,每轮完成72次吃饭任务
  3. 1132÷72=18.5轮,非整除,所以做不到刚好某一轮完成吃饭任务

我哪里理解错了么?