![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 24.07.2018
Сообщений: 133
|
![]()
Main.java:
package tree; public class Main { public static void main(String[] args) { Node node = new Node("name", null, 0L); int foundForName = node.findByName("name").size(); int foundForName1 = node.findByName("name1").size(); System.out.println("found for name - " + foundForName); System.out.println("found for name1 - " + foundForName1); Tree tree = new Tree("name", null); tree.add(node); int foundForNameInTree = tree.findByName("name").size(); System.out.println("found for name in tree - " + foundForNameInTree); Tree tree2 = new Tree("name", null); tree2.add(node); tree.add(tree2); int foundForNameInTree2 = tree.findByName("name").size(); System.out.println("found for name in tree 2 - " + foundForNameInTree2); } } Entry.java: package tree; import java.util.*; public abstract class Entry { private final Tree parent; private String name; public Entry(String name, Tree parent) { this.name = name; this.parent = parent; } public boolean delete() { if (parent == null) { return false; } return parent.remove(this); } public abstract long size(); public String getFullPath() { if (parent == null) { return name; } else { return parent.getFullPath() + "/" + name; } } public void changeName(String newName) { this.name = newName; } public String getName() { return name; } public List<Entry> findByName(final String name) { final List<Entry> result = new ArrayList<Entry>(); final Queue<Entry> allFiles = new LinkedList<Entry>(); allFiles.add(this); while (!allFiles.isEmpty()) { final Entry localEntry = allFiles.poll(); if (localEntry instanceof Tree) { final List<Entry> files = ((Tree) localEntry).iterate(); for (final Entry innerFile : files) { if (innerFile instanceof Tree) { allFiles.add(innerFile); } else if (innerFile.getName().equals(name)) { result.add(innerFile); } } } else if (localEntry.getName().equals(name)) { result.add(localEntry); } } return result; } } Node.java: package tree; public class Node extends Entry { private final java.io.ByteArrayOutputStream stream; private final long size; public Node(String name, Tree parent, long size) { super(name, parent); this.size = size; this.stream = new java.io.ByteArrayOutputStream(); } public long size() { return size; } public byte[] getContents() { return stream.toByteArray(); } public void setContents(byte[] content) { this.stream.write(content, 0, content.length); } } Tree.java: package tree; import java.util.ArrayList; import java.util.List; public class Tree extends Entry { private final List<Entry> contents; public Tree(String name, Tree tree) { super(name, tree); contents = new ArrayList<Entry>(); } protected List<Entry> iterate() { return contents; } public long size() { long size = 0; for (final Entry entry : contents) { size += entry.size(); } return size; } public boolean remove(Entry entry) { return contents.remove(entry); } public void add(Entry entry) { contents.add(entry); } } Кросс http://www.programmersforum.ru/showt...90#post1746890 Последний раз редактировалось Аватар; 15.08.2018 в 07:36. |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
не удалось найти имя типа или пространства имен | Gul'ka | C# (си шарп) | 7 | 18.12.2015 13:51 |
Не удалось найти компонент, Приложению не удалось запуститься, поскольку name.dll не был найлен | Terikon | Общие вопросы Delphi | 2 | 10.11.2011 23:06 |
Не определяется главный класс | PastoriXx | Общие вопросы по Java, Java SE, Kotlin | 3 | 21.04.2011 18:46 |
Не удалось найти в среде окружения сборки команду: make | iPashqa | Общие вопросы C/C++ | 9 | 08.02.2011 18:34 |
При запуске Windows не удалось найти winsrv | a459565 | Windows | 8 | 29.06.2010 11:31 |