我有对象 Classe
有一个房间列表,我有一个预定义的房间列表 roomsList
,我想从列表 roomsList
中随机添加 2 个房间 Classe
{1}},其中添加到 Classe
的房间无法再次添加到另一个 Classe
。
例如,如果我有 3 个班级和 7 个房间,则每个班级将有 2 个房间,并且将保留 1 个房间。
List<Classe> classes = classRepository.findAll();
for (Classe cl : classes) {
List<Room> roomsList = Arrays.asList(new Room1(), newRoom2(), new Room3(), new Room4(), new Room5(), new Room6(), new Room7());
if (roomsList.size() >= classes.size() * 2) {
cl.setRooms(...);
}
}
答案 0 :(得分:0)
可能是这样的吗?我希望我能很好地理解你想要什么。
Random rand = new Random();
List<Classe> classes = classRepository.findAll();
List<Rooms> rooms = roomsRepository.findAll();
int roomsPerClass= Math.floor(rooms.size()/classes.size());
for (Classe classe:classes) {
for(int count=0; count<roomsPerClass) {
Room room = rooms.get(rand.nextInt(rooms.size()));
rooms.remove(room);
classe.add(room);
}
}
答案 1 :(得分:0)
另一种可能性:
List<Classe> classes = classRepository.findAll();
List<Room> roomsList = Arrays.asList(
new Room1(), newRoom2(), new Room3(), new Room4(),
new Room5(), new Room6(), new Room7());
Collections.shuffle(roomsList);
for (Classe cl : classes) {
if (roomsList.size() >= 2) {
// Take first two rooms from shuffled list...
cl.setRooms(roomsList[0], roomsList[1]);
// ... then remove them from the list so they can't be assigned again
roomsList.remove(0);
roomsList.remove(0);
}
}