基本上我的问题是我正在尝试编写一个方法,在字符串图中找到一个随机路径,它的参数是一个起始字符串,一个整数长度和一个存储路径的字符串Vector。我试图通过首先将起始字符串添加到我们的空白向量,通过其邻居递归,直到向量的长度(不包括起始节点)与参数中指定的整数长度相同来尝试这样做。到目前为止,我已经提供了我的代码:
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 - &gt;在java中获取“for each”循环的任何方式都可以按照随机顺序处理集合,如同选择启动到finsih一样?
提前致谢