我正在学习如何用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个变量,一个是我试图在映射的每个目标中找到的一个。
例如,如果您的地图包含值中的字符串:
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;
}
您是正确的,问题主要出在您的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;
}