static void BFS(ArrayList<String> map, int [] s, int [] t){
int n = map.size();
int m = map.get(0).length();
final int INF = (int) Math.pow(10, 9);
int [][] delta = {{0, -1}, {0, 1}, {1, 0}, {-1, 0}};
int[][]arrayINFmap = new int[n][m];
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
arrayINFmap[i][j] = INF;
}
}
String[][]arrayTFmap = new String[n][m];
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
arrayTFmap[i][j] = "False";
}
}
// проблема тут
ArrayDeque<List> deque = new ArrayDeque<>();
arrayINFmap[s[0]][s[1]] = 0;
arrayTFmap[s[0]][s[1]] = "True";
deque.add(Arrays.asList(s));
while (deque.size() != 0){
int x = deque.peekFirst().get(0);
int y = deque.peekFirst().get(1);
}
}
тут проблема в том, что get возвращает Object. А мне int нужен
要从java 队列中的列表中获取数字,您至少必须声明该队列包含数字列表
Deque<List<Integer>>,而不是“原始”内容Deque<List>。Roman C. 在他的评论中指出了这一点。然而,在这样的声明之后,有必要将原始整数数组正确地转换
int[] s为所需的列表。Arrays.asList(int[] arr)不将数组转换为列表,因为它仅适用于对象数组,即 至少应该有Integer[]。数组转换为列表的方式有很多种,不同类型的数组参见 array -> ArrayList,主要是通过 Stream API:
ArrayList使用Collectors.toList()(Java 8+)获取实例Stream::toList(Java 16+)获取不可变列表