从列表中随机选择用户到另一个列表

时间:2015-10-27 08:35:54

标签: java list random

我试图从此列表中随机选择用户:

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>。 (如果我不对,请告诉我)

我该如何解决这个问题?

1 个答案:

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

对于奇数用户,最后一个用户根本没有午餐。你必须将它添加到上面的代码中。