检查向量中是否存在特定对象

时间:2015-08-04 04:52:12

标签: java object vector data-structures

我正在创建一个存储特定类对象的向量。 这个类是一个String变量,它是该对象的标识符。 所以,我创建一个对象并将此变量设置为“abc”。然后在销毁此对象之后,我创建另一个对象并将相同的变量设置为“abc”。 现在我必须检查向量中是否存在任何变量设置为“abc”的对象。

我尝试过使用toString()和类似的(),但没有成功。 我知道我可以做一个循环并检查它但我希望有一些更简单和更快的方法。

提前致谢。

1 个答案:

答案 0 :(得分:0)

你的意思是......

我们有一个班级狗。

public class Dog {
    public String name;
    public String color;
    public ZonedDateTime dateOfBirth;

    public Dog( String nameArg ) {
        this.name = nameArg;
    }

}

我们在Vector中收集实例。

Vector dogs = new Vector( 3 );
dogs.add( new Dog( "Jupiter" ) ) ;
dogs.add( new Dog( "Jasmine" ) ) ;
dogs.add( new Dog( "Jacques" ) ) ;

稍后我们要测试Vector是否包含任何名为" Jasmine"的狗?上面不是特定的狗,但任何包含该文字的名称?

是的,循环询问每只狗的名字并比较返回的文字是单向的。

另一种方法是覆盖equals方法来比较名称。然后,您可以在向量上调用contains方法,以查看它是否具有匹配的狗对象。但是压倒equals通常是不现实的。在这个例子中,共享一个名字并不意味着我们拥有相同的狗,所以我们不希望它是equals的定义。

地图

更好的方法是使用与Vector不同的集合。其中一个Map实现更有意义。地图存储一对对象,一个键和一个值。

在这个例子中,狗的名字串将是关键。狗对象将是值。稍后提供密钥时,可以检索值(狗对象)。您可以询问地图是否包含特定密钥。

请参阅Tutorial on Map

顺便说一句,Vector一般不再使用了。它早在很久以前被List的其他实现所取代,例如ArrayListLinkedList