【问题标题】:Use the indexOf() method of Vector in java to match a member variablejava中使用Vector的indexOf()方法匹配一个成员变量
【发布时间】:2015-12-11 04:12:15
【问题描述】:

这是我的代码:

String name = "John Doe";

int result = vec.indexOf(name);

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

【问题讨论】:

  • 试试boolean result = vec.stream().anyMatch(e -> e.getName().equals(name));
  • 错误'此语言级别不支持Lamda表达式'
  • @user2218567,这些答案中的任何一个都完成了您的要求吗?

标签: java vector contains


【解决方案1】:

仅仅覆盖 toString() 方法是不行的。你需要覆盖 MyClass 的 equals 方法,你应该将 MyClass obj 传递给 vector.contains() 方法。请在下面找到代码。

像这样覆盖equals方法。

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 contains 方法时,请执行以下操作。

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);

结果: 向量包含 Alpha = true

【讨论】:

  • 这很好,但唯一的问题是我不能传入整个对象。我只知道对象的名称变量,它是一个字符串。我想以此为基础匹配对象。所以我需要使用 contains() 和 indexOf() 来获取索引。
【解决方案2】:

据我所知,您只是想检查存储在您拥有的字符串中的名称是否与任何“MyClass”对象的“名称”成员匹配。
为什么不为它创建自己的方法呢?我在 MyClass 中创建了一个构造函数,在初始化期间我将一个字符串作为参数传递给该对象,该参数为它的“名称”。
之后,只需创建一个遍历向量并返回 true 的新方法em> 如果任何对象的“名称”与传递给检查的参数匹配:


班级:

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

【讨论】:

    猜你喜欢
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多