java - 构建随机排列列表的最有效方法

标签 java random arraylist coupling

对于给定的Collection<Object> aCollection , 如何构建 ArrayList<OrderedCouple<Object>>以及 aCollection 中所有可能的情侣排列(自耦合除外)。

例如,说 aCollectionSet<Team>包含teamA , teamBteamC ,和OrderedCouple而是一个类 Game<Team>该构造函数接收两个团队(主机和访客)作为参数。 我想建立一个ArrayList所有可能的Game介于 Team 之间s。即ArrayList将是组{new Game(teamA, teamB), new Game(teamA, teamC), new Game(teamB, teamA), new Game(teamB, teamC), new Game(teamC, teamA), new Game(teamC, teamB)}以随机顺序排列。

最佳答案

我想不出比这更快的方法了:

@Test
public void buildMatchUps() {
    List<String> teams = Arrays.asList("A", "B", "C");
    int s = teams.size() * teams.size() - teams.size();
    List<String> matchUps = new ArrayList<String>(s);
    for(String host : teams) {
        for(String guest : teams) {
            if(host != guest) { // ref comparison, because the objects
                                // come from the same list. Otherwise
                                // equals should be used!
                matchUps.add(host + " : " + guest);
            }
        }
    }
    Collections.shuffle(matchUps);
    for(String matchUp : matchUps) {
        System.out.println(matchUp);
    }
}

打印如下内容:

C : A
B : A
A : C
C : B
B : C
A : B

关于java - 构建随机排列列表的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20445290/

相关文章:

java - 在访问 JNI 接口(interface)时,为什么 C 需要额外的间接级别而 C++ 不需要?

java - 让线程 sleep 随机数量的 MS

java - 如何在 Java 中保持多次执行的概率

java - 如何在 ArrayList 中找到不同大小字符串的所有递归组合? - 参见示例

java - 如何使用经度/纬度在数组列表中绘制 map ?

java - 使用 'this' 作为构造函数中方法调用的参数

random - 如何生成相关的 Uniform[0,1] 变量

arrays - 从不重复的数组中洗牌/随机化问题 (SWIFT)

java - Java有这样的字母顺序吗?

java - Apache Camel WebService 消费者