我正在学习如何用Java编写代码,并在这个概念上苦苦挣扎。
我需要编写一个采用char参数的方法,该参数存在于映射中的Objects中。

遍历地图以查找这些对象后,它需要返回一个包含此char值的当前不存在的对象集作为新的Set。

以下是我当前的代码,无法获得期望的结果,我相信问题出在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个字符串和一个是我试图在地图的每次迭代中找到的char值。

最佳答案

您是正确的,问题主要出在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;
}

10-05 22:02