求所有的分组可能 其中不可以重复
请用代码做出来
2条回答 默认 最新
- STRANG-P 2021-10-19 10:14关注
@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()); } } }
解决 无用评论 打赏 举报
悬赏问题
- ¥20 Keil uVision5创建project没反应
- ¥15 mmseqs内存报错
- ¥15 vika文档如何与obsidian同步
- ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
- ¥15 陆空双模式无人机飞控设置
- ¥15 sentaurus lithography
- ¥100 求抖音ck号 或者提ck教程
- ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
- ¥20 web页面如何打开Outlook 365的全球离线通讯簿功能
- ¥15 io.jsonwebtoken.security.Keys