java - 从列表中创建玩家团队

标签 java linked-list

嘿,我正在尝试创建一种随机方法来从链接列表中选择一个 4 人团队,我想知道这段代码是否有效。

这是一个示例代码

 public static void enterGame(Client c) {
    int n = teamSize;
    boolean startNewGame = false;
    if(waitingPlayers.size() <= 3) {
        return; // not enough players
    }
    startNewGame = true;
    if(startNewGame) {
        System.out.println("Starting new game");
        for(int i=0; i<n; i++) {
            Collections.shuffle(waitingPlayers);
            System.out.println("Picking random player");
            waitingPlayers.remove(c);
            System.out.println("removing from random player list");
            players.add(c);
            System.out.println("adding player to ingame list");
        }
    }
}

最佳答案

我会使用Collections.shuffle()和一个子列表。为了知道你的代码是否有效,你为什么不测试它(单元测试或只是一些尝试)?

另外,这部分:

boolean startNewGame = false;
if(waitingPlayers.size() > 3) {
        startNewGame = true;
} else {
        startNewGame = false;
        return;
}
if(startNewGame) {

太复杂了,我将其替换为:

if(waitingPlayers.size() <= 3) {
    return; // not enough players
}

完整代码:

public static void enterGame(final Client c) {      
    if(waitingPlayers.size() <= 3) {
        return; // not enough players
    }

    System.out.println("Starting new game");
    Collections.shuffle(waitingPlayers);
    System.out.println("Picking random players");
    // ? to be replaced by the real type of objects inside waitingPlayers
    final List<?> picked = waitingPlayers.subList(0, 3); 
    players.addAll(picked);
    waitingPlayers.removeAll(picked);
}

关于java - 从列表中创建玩家团队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8265329/

相关文章:

java - 它真的是适配器模式吗?

c - 从数组创建链表时 C 中的段错误

c - 在 C 中实现哈希表(使用链表避免冲突)的必要结构?

c++ - 如何在 C++ 类中使用自引用类型和别名

java - 如何连续使用两次比较器?

java - 使用 JPanel 初始化 JFrame 的正确方法

java - hibernate/JPA 中的 @PreUpdate 和 @Prepersist (使用 session )

java - 使用 AJAX 将图像和附加信息发送到 Servlet

反向遍历双向链表时崩溃

c++ - 在单个链表线程中删除和插入是否安全?