得到一个;对于每一个“;在Java中循环,每次都以不同的顺序运行

得到一个;对于每一个“;在Java中循环,每次都以不同的顺序运行,java,recursion,random,graph,Java,Recursion,Random,Graph,基本上,我的问题是,我正在尝试编写一个方法,在字符串图中查找一个随机路径,该方法以开始字符串、整数长度和存储路径的字符串向量作为参数。我试图这样做,首先将起始字符串添加到空白向量,通过它的邻居递归,直到向量的长度(不包括起始节点)与参数中指定的整数长度相同。到目前为止,我已经在这里提供了我的代码: public Vector<String> findRandomPathFrom(String n, int len, Vector<String> randomPath){

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

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;

}
公共向量findRandomPathFrom(字符串n,整数len,向量随机路径){
随机路径。添加(n);
if(randomPath.size()==len+1)
返回随机路径;
for(字符串m:this.neights(n)){
如果(!randomPath.contains(m)&&findRandrandomPathFrom(m,len,randomPath)!=null)
返回随机路径;
}
path.setSize(path.size()-1);
返回null;
}
它似乎工作得很好,返回的路径正好是给定开始字符串之后指定的字符串数。然而,对于任何给定的起始字符串,它每次都生成完全相同的路径,这有点违背了它作为随机路径生成器的目的。我猜这个问题与我的“for-each”循环有关,该循环遍历当前字符串的所有相邻字符串。它似乎每次都与邻域向量中的第一个字符串一起运行。有谁能帮我解决这个问题,让它选择一个随机的邻居,而不是按顺序

tl;dr->有没有办法在java中获得一个“for-each”循环,以随机顺序处理一个集合,而不是开始finsih


提前感谢

在迭代之前在邻居列表上使用。

在迭代之前在邻居列表上使用。

非常感谢,我不明白我怎么会错过这个,现在每次都会生成一个随机路径。我很想你,我不明白我怎么会错过这个,它现在每次都会生成一条随机路径