写一个在Map上进行迭代的方法,查找包含值的Object条目,将此Object添加到新的set中,然后返回该set

问题描述 投票:0回答:1

我正在学习如何用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个变量,一个是我试图在映射的每个目标中找到的一个。

java loops set maps
1个回答
0
投票

例如,如果您的地图包含值中的字符串:

Map<String, String> map1;

您可以使用类似这样的内容:

public Set<String> findObj(char aChar)
{
 Set<String> objSet = new HashSet();
 for (String Obj: map1.values())
 {  
    if (Obj.indexOf(aChar)!=-1)
    {
        //if true add to objSet
    }
 }
 return objSet;
}

0
投票

您是正确的,问题主要出在您的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;
}
© www.soinside.com 2019 - 2024. All rights reserved.