Есть ли способ отобразить набор в строку без создания множества экземпляров набора? - PullRequest
0 голосов
/ 23 февраля 2020

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

Мой подход заключается в использовании HashMap в Java: HashMap<String, Set<String>>. Курс представляет собой простую строку, в то время как каждый набор содержит четыре предмета, необходимые для курса.

Каждая запись должна быть добавлена ​​вручную, но, в свою очередь, требуется много экземпляров объектов Set для каждой записи:

Set<String> setA = new HashSet<String>(); // for first pair

Set<String> setB = new HashSet<String>(); // for second pair.

И так далее ...

Для каждой записи ключа / значения я хочу проверить / сравнить значение (набор объектов) с четырьмя объектами, введенными пользователем, и если набор содержит Введенные предметы, ключ (курс) добавляется в массив совпадений.

Кто-нибудь имеет представление о том, как я должен go об этом?

Я пытался работать над этим. Мне действительно нужно уложиться в срок

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Вы можете сравнивать значения таким образом, перебирая ключи hashMap

    for(String course: hashMap.keySet()) {
     //Convert all the set values to lower case. Also do the same for user entered subjects set.
     Set<String> newSet = hashMap.get(course).stream().map(String::toLowerCase).collect(Collectors.toCollection(HashSet::new));
                     if( newSet.containsAll(userEnteredCourses)) {
                         matchesArray.add(course);
                     }
                 }
0 голосов
/ 23 февраля 2020

Я предполагаю, что вы хотите, чтобы Map.Entry. Вы упомянули в своем вопросе, что хотите использовать HashMap. Чтобы l oop через список значений HashMap, вы бы сделали что-то вроде этого:

for(Map.Entry<Integer, Integer> eachEntry : hashMap.entrySet()) 
{
    int key = eachEntry.getKey(); 
    int value = eachEntry.getValue(); 
}

В моем примере это хэш-карта, содержащая пары значений ключа Integer, но вы можете изменить ее на нужный вам тип. Быстрый поиск в Google показал бы, как go через Set внутри hashmap. Надеюсь, это поможет

...