让数据组合成树的形式,比如树头有孩子,且孩子自己也是树头。统一的接口定义树中的成员。无论是孩子还是树头,都统一用同一个接口标示。这就是重点;java.util.hashmap.putall方法并没有这种组合的思想。因为putall不是树头。而是遍历把所有孩子给存进去。
public interface IFile{
public void getFile();
}
public class File implements IFile{
private String fileName;
public File(String fileName){
this.fileName = fileName;
}
public void getFile(){
System.out.println(this.fileName);
}
}
public class Folder implements IFile{
private String fileName;
private java.util.ArrayList<IFile> files = new java.util.ArrayList<IFile>();
public Folder(String fileName){
this.fileName = fileName;
}
public void addFile(IFile iFile){
this.files.add(iFile);
}
public void getFile(){
for(int i=0;i<files.size();i++){
files.get(i).getFile();
}
System.out.println(this.fileName);
}
}
@SuppressWarnings("rawtypes")
public static void main(String[] args) throws ParseException{
IFile A = new test().new File("A");
IFile B = new test().new File("B");
Folder C = new test().new Folder("C");
Folder D = new test().new Folder("D");
IFile E = new test().new File("E");
IFile F = new test().new File("F");
C.addFile(A);
C.addFile(B);
C.addFile(D);
D.addFile(E);
D.addFile(F);
C.getFile();