Что такое хорошая структура данных для создания классов эквивалентности на узлах дерева?

ArrayList nList = new ArrayList();
     String findString = "Kat Asman";
     List lst = new ArrayList(Arrays.asList(SoccerNames));
     lst.addAll(Arrays.asList(FootballNames));
     lst.addAll(Arrays.asList(VolleyballNames));

    for(String s: lst){
        if(s.contains(findString)){
            nList.add(s);
        }
        System.out.println(nList);
    }  

Вы можете использовать метод Объединение более одного массива в один массив / список , так что вы можете выполнить через все три массива всего за один цикл .

Надеюсь, что работает.

6
задан Pete Kirkham 24 March 2009 в 12:14
поделиться

3 ответа

Вы, кажется, имеете дело с двумя формами эквивалентности. Простая эквивалентность (A), отслеживаемая как классы эквивалентности, которые поддерживаются в актуальном состоянии, и структурная эквивалентность (D), для которой вы иногда создаете один класс эквивалентности, а затем выбрасываете его.

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

4
ответ дан 10 December 2019 в 00:44
поделиться

Я не думаю, что любая структура собирается решить Ваши проблемы, но Вы могли бы смотреть на структуру данных Непересекающегося набора. Класс эквивалентности, в конце концов, является тем же самым как разделением набора. Это должно смочь обработать некоторые из тех операций быстро.

4
ответ дан 10 December 2019 в 00:44
поделиться

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

Причин было множество, но причиной номер один была производительность, мои классы с числом детей до 100 или около того, на самом деле лучше работали бы, манипулируя ими как массивом, чем через узлы дерева, в основном из-за аппаратной локализации и логики предварительной выборки ЦП. и конвейерная обработка процессора.

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

2
ответ дан 10 December 2019 в 00:44
поделиться
Другие вопросы по тегам:

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