Java создать несколько древовидной структуры, используя родительский идентификатор из плоского файла

Вы можете создать свой собственный элемент управления, который наследуется от текстового поля, но после каждого символа вы заменяете его символом *, сохраняя истинное значение в частной переменной на странице. Используя флажок, вы можете переключить, показывает ли значение в текстовом поле истинное значение или значение *.

Это не изящное решение, и это не лучшая практика, но я думаю, что это еще альтернатива, если вы готовы жить с ним.

1
задан code_fish 17 January 2019 в 16:42
поделиться

1 ответ

Кажется, что parent.id < child.id выполняется, то есть: родитель создается первым. Хотя это и не обязательно, иногда это может облегчить ситуацию.

Здесь это не нужно.

public void processData(List<Category> categoryList) {
    Map<String, CategoryTree> map = categoryList.collect(
            Collectors.toMap(cat -> cat.id,
                             cat -> new CategoryTree(id, name)));
    List<CategoryTree> treeRoots = new ArrayList<>(); // Forrest if more than one root.
    categoryList.forEach(cat -> {
        CategoryTree node = map.get(cat.id);
        if (cat.parentId != null) {
            CategoryTree parent = map.get(cat.parentId)
            parent.children.add(node );
        } else {
            treeRoots.add(node );
        }
    });
    List<CategoryTree> roleObjectList = new ArrayList<>(map.values());
    ...

Хотя, возможно, быстрее, чем алгоритм следования по пути (который может использовать порядок идентификаторов), ему требуется дополнительная память: дополнительная карта.

0
ответ дан Joop Eggen 17 January 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: