我正在学习如何用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;
}