Предположим, что область 1 имеет три содержания 2,3,4, площадь2 имеет три содержания 1,2,3, а площадь 3 имеет два содержания 1,2. m - это карта, в которой ключи являются locationid, а значения - это список contentid. Например, в области 1 есть карта (1, {2,3,4}). Каждая область выбирает 1 контент и находит всю комбинацию. Я использую dfs (рекурсия) для решения этой проблемы, но в строке 1 есть исключение nullpointer. Промежуточный элемент представляет собой список строк и i итерации по списку, и их типы являются строками, почему существует исключение с нулевым указателем? Это специфическое условие в исключении nullpointer, и оно не дублируется.Nullpointerexception при первом поиске глубины поиска
public static List<String> dfs(String digits,Map<String, List<String>> m) {
List<String> result = new ArrayList<String>();
if(digits.length() == 0){
return result;
}
if(digits.length() == 1){
return m.get(digits.charAt(0));
}
List<String> intermediate = dfs(digits.substring(1, digits.length()),m);
for(String first : m.get(Character.toString(digits.charAt(0)))){
for(String rest : intermediate){ // line1
result.add(first + rest);
}
}
return result;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String digits="123";
Map<String,List<String>> selected=new HashMap<>();
selected.put("1", new ArrayList<>(Arrays.asList("4","2","3")));
selected.put("2", new ArrayList<>(Arrays.asList("1","2","3")));
selected.put("3", new ArrayList<>(Arrays.asList("1","2")));
dfs(digits,selected);
}
Опубликовать трассировку стека. – elhefe
Я не использовал стек, я использую рекурсию. @elhefe – KKKK
https://en.wikipedia.org/wiki/Stack_trace – elhefe