【问题标题】:Getting a "for each" loop in Java to run in different order everytime让 Java 中的“for each”循环每次都以不同的顺序运行
【发布时间】:2010-04-22 10:31:47
【问题描述】:

基本上我的问题是我正在尝试编写一个在字符串图中找到随机路径的方法,该方法将起始字符串、整数长度和将存储路径的字符串向量作为参数。我试图通过首先将起始字符串添加到我们的空白向量中,通过它的邻居递归直到向量的长度(不包括起始节点)与参数中指定的整数长度相同。到目前为止,我在这里提供了我的代码:

public Vector<String> findRandomPathFrom(String n, int len, Vector<String> randomPath){
    randomPath.add(n);

    if (randomPath.size() == len + 1)
        return randomPath;

    for (String m : this.neighbours(n)){
        if (!randomPath.contains(m) && findRandomPathFrom(m, len, randomPath) != null)
            return randomPath;
    }

    path.setSize(path.size() - 1);
    return null;

}

它似乎工作正常,返回一个与给定起始字符串后指定的字符串数量完全相同的路径。但是,对于任何给定的起始字符串,它每次都会生成完全相同的路径,这违背了它作为随机路径生成器的目的。我猜这个问题与我的“for each”循环有关,它循环遍历当前字符串的所有相邻字符串。似乎每次都使用邻居向量中的第一个字符串。谁能帮我解决这个问题,让它随机选择一个邻居而不是按顺序排列?

tl;dr -> 在 java 中获取“for each”循环以随机顺序处理集合的任何方式与 start-to-finsih 相对?

提前致谢

【问题讨论】:

    标签: java recursion random graph


    【解决方案1】:

    在迭代之前在邻居列表上使用Collections.shuffle()

    【讨论】:

    • 非常感谢,我不明白我怎么错过了,现在每次都生成随机路径
    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 2021-10-14
    • 1970-01-01
    • 2016-04-12
    • 2015-11-12
    • 1970-01-01
    相关资源
    最近更新 更多