Написание метода, который перебирает карту, ищет записи объекта, содержащие значение, добавляет этот объект в новый набор, а затем возвращает этот набор - PullRequest
0 голосов
/ 28 апреля 2020

Я учусь кодировать в Java и борюсь с этой концепцией. Мне нужно написать метод, который принимает аргумент char, который существует в объектах, которые находятся на карте.

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

Ниже приведен мой текущий код, который не дает желаемого результата, я считаю, что проблема в операторе if. Я сделал много разных комбинаций equals() и containsValue на объекте и карте и не могу заставить его вернуть значение true.

public Set findObj(char aChar)
{
    Set<String> objSet = new HashSet();

    for (Object Obj: map1.values())
    {  
       if (map1.values().contains(aChar))
       {
           //if true add to objSet
       }
    }

    return objSet;
}

Если это поможет, то карта

Map<String,Obj> map1= new HashMap<>();

и объект создается классом и содержит 3 переменные, 2 строки и одна - значение символа, которое я пытаюсь найти в каждой итерации карты.

1 Ответ

0 голосов
/ 28 апреля 2020

вы правы, проблема в основном в вашем операторе if, так как вы перебираете объекты на карте, вам следует проверить, содержит ли текущий объект строку, независимо от того, является ли карта целое содержит это

public Set findObj(char aChar) {
    Set<String> objSet = new HashSet();
    for (Object c : map1.values()) {
        if (c.toString().indexOf(aChar) >= 0) {
            //if true add to objSet
        }
    }
    return objSet;
}
...