Farz edelim alan1 üç içeriğe 2,3,4, area2 üç içeriğe 1,2,3 ve alan3'ün iki içeriğine 1,2 sahip olduğunu varsayalım. m, tuşların konumsal olduğu ve değerlerin contentid listesi olduğu haritadır. Örneğin, alan1 haritasına sahiptir (1, {2,3,4}). Her alan 1 içerik seçer ve tüm kombinasyonları bulur. Bu sorunu çözmek için dfs (recursion) kullanıyorum ancak line1'de bir nullpointerexception var. Arabirim bir dize listesidir ve listeden geçiyorum ve bunların türleri her ikisi de dize, neden boş bir işaretçi istisnası var? Bu, nullpointerexception'da özel bir durumdur ve iki kopya değildir.Nullpointerexception derinlemesine ilk arama gerçekleştirdiğimde
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);
}
Yığın izlemeyi gönderin. – elhefe
Yığını kullanmadım, özyinelemeyi kullanıyorum. @elhefe – KKKK
https://en.wikipedia.org/wiki/Stack_trace – elhefe