Credo che questa classe sia tutto ciò che ti serve:
codice:
public class FileNode {
private String nome;
private Vector figli;
public FileNode(String nome) {
this.nome = nome;
figli = new Vector();
}
public FileNodo(String nome, FileNode figlio) {
this.nome = nome;
figli = new Vector();
figli.add( figlio );
}
public String getNome() { return nome; }
public void aggiungi(FileNode figlio) {
figli.add( figlio );
}
public FileNode getFiglio(String nome) {
return trova(nome);
}
private FileNode trova(String nome) {
boolean trovato = false;
FileNode f = null;
int i = 0;
while ((i < figli.size()) && !trovato) {
if (((FileNode) figli.elementAt(i)).getNome().equals(nome)) {
trovato = true;
f = (FileNode) figli.elementAt(i);
}
}
return f;
}
}
In questo modo, per generare la gerarchia che hai dato tu come esempio, puoi usare queste istruzioni:
codice:
FileNode f=new FileNode("root");
FileNode fratello1=new FileNode("fratello1");
FileNode fratello2=new FileNode("fratello2");
FileNode figlioFratello1=new FileNode("figlio1");
f.aggiungi(fratello1);
f.getFiglio("fratello1").aggiungi(figlioFratello1);//primo figlio
f.aggiungi(fratello2);
In questo modo puoi aggiungere quanti fratelli vuoi.
Ciao.