java list组合递归问题 结果显示有重复的数据 怎么去掉啊 不知道哪里写错了

这是代码片段图片说明输出结果有重复的 不知道什么情况 有没有大神可以指导一下的图片说明正确的显示结果不知道是static方法用错了 还是 list有问题

list里面可以有重复的数据 为什么不用set ,你强转list为set试下

PrintOut()里面的print(list);语句去掉啊。
你加一个次结果就把现有列表全部输出一次,什么意思!?

print(list); 去掉以后:
图片说明

结果就变成 全是3 4 5 了

public static void main(String[] args) {
String[] n ={"1","2","3","4"};
int length = 3;
List lst = Arrays.asList(n);

parse("",length,lst);

System.out.println(all + " - kinds");

}

public static void parse(String s, int total, List<String> lst) {  
    for (int i = 0; i < lst.size(); i++) {  
        List<String> templst=new LinkedList<String>(lst);  
        String n = templst.remove(i);
        String str = s + n;  
        if (total == 1) {  
            System.out.println("index " + all + " : " + str);
            all++;  

        } else {  
            int temp=total-1;
            parse(str, temp, templst);
        }  
    }  
}  

把list放set里面再拿出来就没有重复的数据了

因为list 添加的元素 都是指向一个地址