Лучшая структура данных для вывода информации в примере «Семейное древо» - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь определить, какая структура данных наиболее подходит для следующего этапа моей программы.

Итак, я закодировал некоторые начальные функции (и основную логику).

Сначала я инициализировал глобальную хэш-карту String-> String, ключом которой является имя, а значением - пол («M» или «F»).

Я создал 2 функции, которые принимают имя человека (в виде строки) и сохраняют его в хэш-карте. 1 функция хранит мужчин и 1 функция хранит женщин. Они также проверяют, находится ли имя внутри хэш-карты, и просто возвращают false, если такое же имя уже присутствует. Они возвращают true, когда сохраняют новое имя в хэш-карте.

Затем я создал еще 2 функции, которые снова принимают имя (в виде строки) и проверяют пол. 1 функция для мужчин и 1 для женщин. Если имя присутствует внутри хеш-карты и пол соответствует значению, соответствующему этому имени, функции возвращают true. В противном случае они возвращают false.

public boolean male(String name) {
    if(genders.containsKey(name)) {
        return false;
    } else {
        genders.put(name, "male");
    }
    return true;
}

public boolean isMale(String name) { 
    if(genders.containsKey(name) && genders.get(name) == "male") {
        return true;
    } else {
        return false;
    }
}

Сейчас я пытаюсь реализовать еще 3 функции. 1, чтобы установить пару строк дочерний, родительский. А затем другой 2. 1, которому дано имя в виде строки, возвращает своих родителей, а другой, также получивший имя в виде строки, возвращает своих детей.

Мой вопрос Может ли это быть реализовано в хэш-карте? Как «String» -> «String» parent-> child?

Существует также третий этап, после которого эти 2 хеш-таблицы «соединяются», а логика выводит информацию. Например, вы можете дважды использовать функцию установки родителя для одного и того же дочернего имени (чтобы дать им мать и отца). Затем вы используете функцию установки пола на одном из этих родителей. Если затем вы используете функцию проверки пола для имени другого родителя с другим полом, она автоматически вернет значение true (даже если вы вообще не использовали функцию установки пола для этого другого имени).

Может ли 2-я хеш-таблица учитывать такую ​​функциональность? Или лучше подойдет другая структура данных? Как дерево или какой-то тип графика? График хеш-таблиц?

n.b. Мне не разрешено использовать какое-либо наследование для этого, так как в программе разрешен только 1 класс.

...