Donc, dans une interview, on m'a posé une simple question qui va comme ceci, disons que j'ai une réponse JSON imbriquée, [a, b, c, d [a, [b, [d, e ], g], h]. On me demande de mettre en œuvre une classe qui peut essentiellement gérer pour stocker ces données et une méthode d'impression de le faire, alors voici ce que j'ai:Détection de référence circulaire
public class JSONode
{
private String str;
private JSONode nodes;
public JSONode (String a, ArrayList<String> n)
{
str = a;
nodes = n;
}
}
public class JSONResp
{
private ArrayList<JSONode> arr;
public JSONResp()
{
arr = new ArrayList<JSONode>();
}
public boolean checkCircular(JSONode temp)
{
for (int i = 0; i < arr.size(); i++)
{
if (arr.get(i).nodes == temp)
return true;
}
return false;
}
public void add (JSONode nd)
{
if (!checkCircular(nd))
arr.add(nd);
}
public void recurseJSONode(JSONode)
{
if (!JSONode.node)
System.out.print(JSONode.str);
else {
System.out.print(JSONode.str);
recurseJSONode(JSONode.node);
}
}
public void print()
{
for (int i = 0; i < arr.size(); i++)
recurseJSONode(arr.get(i));
}
public static void main (String[] args) {
JSONResp x = new JSONResp();
x.add(new JSONode("a", null);
x.add(new JSONode("b", null);
}
}
Maintenant, il dit qu'il y aura des problèmes circulaires de références quand j'imprimer, en d'autres mots j'ai la liste A = [a, b, c, D] et D = [q, t, y, A]. Alors il a dit que je devrais empêcher d'ajouter D en utilisant le checkCircular ci-dessus. J'ai fait une tentative. Aussi juste un nœud que je connais mon recurseJSONode n'est pas correct et l'impression aussi, donc à la recherche d'une suggestion pour résoudre cela aussi .. Je suis juste curieux de ce problème.
pourquoi faites-vous en sorte qu'il vérifie un JSNode et ArrayList? – adit
pouvez-vous expliquer en utilisant un exemple sur la façon dont cela fonctionne – adit
Il s'agit d'un algorithme de recherche récursive de base. Une classe célèbre ses parents ou ses enfants. Pour chaque classe, vous devez vérifier les classes référencées, si elle correspond à votre critère de recherche. sinon, vous devez vérifier les classes référencées de la classe référencée. Au début de l'algorithme, vous devez définir un critère d'arrêt, pour arrêter les appels récursifs. Juste google et vous trouverez quelques exemples récursifs faciles –