我试图从此列表中随机选择用户:
private static List<User> users = new ArrayList<>();
进入这一个:
private static List<Lunchpairs> pairs = new ArrayList<>();
这是我的代码:
public static List<Lunchpairs> getPairs() throws NoUserException{
if(users.isEmpty()){
throw new NoUserException("No participants.");
}
for(int i=0; i< 2; i++){
Random pickPairs = new Random();
Lunchpairs randomPairs = users.get(pickPairs.nextInt(users.size()));
pairs.add(randomPairs);
}
return pairs;
}
但它并没有像这样工作。我认为问题在于我无法从List<User>
获取名称并将其转换为List<Lunchpairs>
。 (如果我不对,请告诉我)
我该如何解决这个问题?
答案 0 :(得分:0)
假设Lunchpairs
有一个构造函数,它接受了两个用户,那么这应该做你想要的:
public static List<Lunchpairs> getPairs() throws NoUserException{
if(users.isEmpty()){
throw new NoUserException("No participants.");
}
List<User> shuffeledUsers = new ArrayList<>(users);
Collections.shuffle(shuffeledUsers);
for(int i=0; i < shuffeledUsers.size() / 2; i++){
User user1 = shuffeledUsers.get(i * 2);
User user2 = shuffeledUsers.get(i * 2 + 1);
Lunchpairs randomPair = new Lunchpairs(user1, user2);
pairs.add(randomPair);
}
return pairs;
}
对于奇数用户,最后一个用户根本没有午餐。你必须将它添加到上面的代码中。