使用java中Vector的indexOf()方法匹配成员变量

时间:2015-12-11 04:12:15

标签: java vector contains

这是我的代码:

String name = "John Doe";

int result = vec.indexOf(name);

请记住,vec是MyClass对象的向量,MyClass包含名为name的成员变量。我传入一个字符串而不是MyClass对象,因为我想匹配一个与其成员变量同名的对象。这可能吗。我甚至试图覆盖MyClass中的toString()函数来返回名称,它仍然无法正常工作。任何帮助将不胜感激。

2 个答案:

答案 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;
}