这是我的代码:
String name = "John Doe";
int result = vec.indexOf(name);
请记住,vec是MyClass对象的向量,MyClass包含名为name的成员变量。我传入一个字符串而不是MyClass对象,因为我想匹配一个与其成员变量同名的对象。这可能吗。我甚至试图覆盖MyClass中的toString()函数来返回名称,它仍然无法正常工作。任何帮助将不胜感激。
答案 0 :(得分:1)
Jus重写toString()方法将无法完成工作。你需要覆盖MyClass的equals方法,你应该将MyClass obj传递给vector.contains()方法。请在下面找到代码。
覆盖等于这样的方法。
public boolean equals(Object obj) {
boolean retVar = false;
if (obj instanceof MyClass){
MyClass object = (MyClass) obj;
retVar = object.getName().equals(this.name);
}
return retVar;
}
调用vector时,包含Method,如下所示。
Vector<MyClass> vector = new Vector<MyClass>();
vector.add(new MyClass("Alpha"));
vector.add(new MyClass("Beta"));
vector.add(new MyClass("Gamma"));
MyClass myClass = new MyClass("Alpha");
boolean res = vector.contains(myClass);
System.out.println("Vector contains " + myClass.getName() + " = " + res);
结果: Vector包含Alpha = true
答案 1 :(得分:0)
从我收集的内容中,您只需要检查存储在您所拥有的字符串中的名称是否与“&#39; name”相匹配。任何&#39; MyClass`对象的成员。
为什么不为它创建自己的方法?我在MyClass中创建了一个构造函数,在初始化过程中我将一个字符串作为参数传递给对象分配名称&#39;。之后,只需创建一个迭代的新方法向量并返回 true 如果&#39;名称&#39;任何对象都匹配传递给check的参数:
上课:
class MyClass
{
String name;
MyClass(String name)
{
this.name=name;
}
}
//Inside your relevant function (could be main)
Vector<MyClass> v=new Vector<MyClass>();
v.add(new MyClass("John"));
v.add(new MyClass("Harry"));
String name="John";
boolean res=checkName(v,name);
检查功能:
boolean checkName(Vector<MyClass> v,String name)
{
for(MyClass check:v)
if(check.name.equals(name))
return true;
return false;
}