Nano Hash - криптовалюты, майнинг, программирование

Сортировка дерева реализована с помощью NatTable

Я пытаюсь реализовать сортировку дерева, реализованную с помощью NatTable, но я не могу понять, как это работает. Моя проблема в том, что после сортировки любого столбца, отличного от столбца «дерево», дочерние узлы могут перейти к недопустимому родителю. Хотя порядок элементов правильный на всех уровнях иерархии. Так что в основном я не понимаю цели TreeList.Format.getComparator() и как это связано с компараторами, зарегистрированными для столбцов, и я не понимаю, когда и почему узел может изменить своего родителя.

Я начал с примера TreeGridExample, и мне удалось создать тестовые данные, с которыми у меня такая же проблема

private void createDatums() {       
    createDatum(null, "a", 2);        
    createDatum("a", "aa1", 0);        
    createDatum(null, "b", 0);        
    createDatum("b", "bb1", 0);
    createDatum(null, "m", 1);
    createDatum(null, "n", 0);
}

Если я сортирую столбец bar, узел bb1 перескакивает с b на n, а при удалении сортировки он снова становится дочерним элементом b


Ответы:


1

Ваш компаратор должен учитывать древовидную иерархию.

См. здесь и здесь дополнительная информация.

09.05.2016
  • Я прочитал оба обсуждения, но до сих пор не могу найти причину, по которой узлы меняют родителя. Как я уже писал, у меня такая же проблема даже с кодом примера NatTable. 09.05.2016
  • Насколько я помню, дерево создается путем перехода по списку в порядке DFS. Вы должны объединить его с объектом формата дерева, который управляет иерархией. 09.05.2016

  • 2

    Что касается нашего примера, возможно, наш SortableTreeComparator работает неправильно. И ответ не тривиален.

    Во-первых, для корректной работы TreeList необходимо привести элементы в списке в правильный порядок. Это компаратор деревьев.

    Кроме того, вы хотите добавить пользовательскую сортировку на самом низком уровне. Поэтому в этом случае вам нужно расширить свой компаратор, чтобы проверить уровень дерева.

    Причина, по которой родитель изменяется, заключается в том, что ваш компаратор изменяет порядок в коллекции и, следовательно, нарушает всю древовидную структуру.

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

    Пожалуйста, создайте тикет, чтобы исправить SortableTreeComparator, не знаю, когда я смогу над этим поработать.

    09.05.2016
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..