JAVA list的size为2,但是list取值拿不到只有[],不知道错误的解决办法

import java.util.*;
public class Main {
static List<HashSet> list =new LinkedList<>();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
HashMap<Integer, ArrayList<Integer>> map = new HashMap<>();
int n = scanner.nextInt();
int m = scanner.nextInt();
while (m-- > 0) {
int u = scanner.nextInt();
int v = scanner.nextInt();
ArrayList<Integer> orDefault = map.getOrDefault(u, new ArrayList<>());
if (orDefault == null) orDefault = new ArrayList<>();
orDefault.add(v);
map.put(u, orDefault);
}
int d = scanner.nextInt();
int f = scanner.nextInt();
findRoad(map, d, f, new HashSet<Integer>());
if (list.size() <= 0) System.out.println(-1);
else {
int i1 = list.size();
HashSet res = null;
res=list.get(0);
System.out.println(res);
for (int i = 1; i < list.size(); i++) {
HashSet set1 = list.get(i);
res.retainAll(set1);
}
int size = res.size() == 1 ? 0 : res.size();
System.out.println(size - 1);
}
}
private static void findRoad(HashMap<Integer, ArrayList<Integer>> map, int d, int f,HashSet<Integer> set) {
if(set.contains(f)){
list.add(set);
for ( int i : set) {
System.out.print(i);
}
System.out.println();
return;
}
ArrayList<Integer> arrayList = map.get(d);
for (Integer integer : arrayList) {
set.add(integer);
findRoad(map,integer,f,set);
set.remove(integer);
}
}
输入是
7 6
1 3
2 3
3 4
3 5
4 5
5 6
1 6
输出是
3456
356
[]
-1
----------------------------------------------------简化版---------------------------------
public class test {
static List<HashSet> list = new LinkedList<>();
public static void main(String[] args) {
findRoad(map, d, f, new HashSet<Integer>());//dsf方法
int i1 = list.size(); //size =2; ?问题就是为什么size=2(方法调用两次add)但是get取值为[] 不应该是方法里面放进去的值么
list.get(0);//[]
}
private static void findRoad(HashMap<Integer, ArrayList<Integer>> map, int d, int f, HashSet<Integer> set) {
if (set.contains(f)) {
list.add(set);
}
//这是dfs
}
}
为啥要我说得这么直白呢?你学的是啥玩意呀???
findRoad(map, d, f, new HashSet<Integer>());
private static void findRoad(HashMap<Integer, ArrayList<Integer>> map, int d, int f,HashSet<Integer> set) {
这个set 不是你 new HashSet<Integer>()这个么?
你有放入数值么?有操作过么?
没有操作过set.contains(f)意义何在?代码写着玩么?浪费这么多时间。每行代码我都看得懂,都不想点破。
好好学习基础,不行从头来。要不很简单的问题你会浪费自己和别人很多时间的。另外,log要加标记,前缀/后缀,否则哪里出来的你都不知道。
没注释,看不懂你要做什么。