mirror of
https://github.com/Zormm/Advent-Of-Code-2022.git
synced 2026-02-26 07:26:51 +01:00
89 lines
1.8 KiB
Java
89 lines
1.8 KiB
Java
import java.util.ArrayList;
|
|
|
|
public class Directory {
|
|
|
|
private ArrayList<File> files;
|
|
private ArrayList<Directory> directories;
|
|
private Directory outerDirectory;
|
|
private String name;
|
|
|
|
public Directory(String name, Directory outerDirectory) {
|
|
files = new ArrayList<File>();
|
|
directories = new ArrayList<Directory>();
|
|
this.outerDirectory = outerDirectory;
|
|
this.name = name;
|
|
}
|
|
|
|
public Directory outerDirectory() {
|
|
return outerDirectory;
|
|
}
|
|
|
|
public void addElement(Object element) {
|
|
if (element instanceof File) {
|
|
files.add((File) element);
|
|
}
|
|
else if (element instanceof Directory) {
|
|
directories.add((Directory) element);
|
|
}
|
|
}
|
|
|
|
public int size() {
|
|
int sum = 0;
|
|
|
|
for (File file : files) {
|
|
sum += file.size();
|
|
}
|
|
|
|
for (Directory directive : directories) {
|
|
sum += directive.size();
|
|
}
|
|
|
|
return sum;
|
|
}
|
|
|
|
public String name() {
|
|
return name;
|
|
}
|
|
|
|
public Directory getInnerDirectory(String name) {
|
|
for (Directory directory : directories) {
|
|
if (directory.name().equals(name))
|
|
return directory;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public ArrayList<Directory> getAllInnerDirectories() {
|
|
return directories;
|
|
}
|
|
|
|
public ArrayList<Directory> getAllFolders() {
|
|
ArrayList<Directory> folderList = new ArrayList<Directory>();
|
|
|
|
folderList.addAll(directories);
|
|
|
|
for (Directory e : directories)
|
|
folderList.addAll(e.getAllFolders());
|
|
|
|
return folderList;
|
|
}
|
|
|
|
public int countSum(int maximum) {
|
|
int sum = 0;
|
|
|
|
for (Directory directive : this.getAllFolders()) {
|
|
if (directive.size() <= maximum)
|
|
sum += directive.countSum(maximum);
|
|
}
|
|
|
|
return sum;
|
|
}
|
|
|
|
public void print() {
|
|
for (Directory directive : directories) {
|
|
System.out.println(directive.size());
|
|
}
|
|
}
|
|
|
|
}
|