I have an arrayList and I want to display in a hierarchal structure.
I want the results to look like this. If it doesn't have any child nodes I want the item indented with a hyphen:
User Design
Lectures
Week 1
-Apr 5
-Apr 8
Week 2
-Apr 12
Activities
Personas
Male
-George
Female
-Allison
-Jessica
I am trying to display the list using a recursive method but not getting the desired results. This is what I've tried so far:
import java.util.*;
class Materials {
public int id;
public String content;
public int pid;
public Materials(int id, String content, int pid) {
this.id = id;
this.content = content;
this.pid = pid;
}
}
public class nestedList {
public static ArrayList<Materials> material;
public static void main(String[] args) {
material = new ArrayList<Materials>();
material.add(new Materials(1,"User Design", 0));
material.add(new Materials(2,"Lectures", 1));
material.add(new Materials(3,"Activities", 1));
material.add(new Materials(4,"Week 1", 2));
material.add(new Materials(5,"Apr 5", 4));
material.add(new Materials(6,"Apr 8", 4));
material.add(new Materials(7,"Week 2", 2));
material.add(new Materials(8,"Apr 12", 7));
material.add(new Materials(9,"Personas", 3));
material.add(new Materials(10,"Male", 9));
material.add(new Materials(11,"Female", 9));
material.add(new Materials(12,"George", 10));
material.add(new Materials(13,"Allison", 11));
material.add(new Materials(14,"Jessica", 11));
displayContent(material);
}
static void displayContent(ArrayList<Materials> materials) {
ArrayList<Materials> childs = new ArrayList<Materials>();
for (Materials material : materials) {
childs = selectChild(material.id);
System.out.println(material.content);
displayContent(childs);
}
}
static ArrayList<Materials> selectChild(int id) {
ArrayList<Materials> list = new ArrayList<Materials>();
for (int i = 0; i < material.size(); i++) {
if(material.get(i).pid == id) {
list.add(material.get(i));
}
}
return list;
}
}
When I run this code the items in the arrayList repeats too many times. It initially displays the correct hierarchal structure and then starts to repeat with random variations.
Can anyone please point me in the right direction?