java - 将随机对象添加到随机数组

时间:2021-01-21 13:41:32

标签: java

我有对象 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(...);
  }
}

2 个答案:

答案 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);
  }
}