getString()这个递归方法,复制了集合进行移除 再将移除后的集合作为参数传给此方法。我不明白的是 在i=0移除完后怎么还有不空集合传进去呢,还是我哪里理解错了,望高手指教
private static void combinations(String st,String s) {
//将输入的字符串转化为字符数组,并定义集合用于存储字符元素
ArrayList<Character> al =new ArrayList<Character>();
char[] ch = s.toCharArray();
//遍历字符数组,并将元素添加到集合
for(char c:ch)
{
al.add(c);
}
//调用getString()方法 并将集合与字符串传给方法
getString(al,st);
}
private static void getString(ArrayList<Character> al,String prefix)
{
for(int index=0;index<al.size();index++)
{ //复制集合
ArrayList<Character> alCopy = new ArrayList<Character>();
alCopy.addAll(al);
String str=prefix+alCopy.get(index);
//移除复制集合中的元素
alCopy.remove(index);
//递归调用本方法
getString(alCopy,str);
}
} |
|