2013-09-28 73 views
0

我创建了一个struct/class的向量。它包含类成员firstName lastName和Age。在java中搜索矢量

class Person 
{ 
    String firstName; 
    String lastName; 
    int Age; 
} 

class Vote 
{ 
    Vector<Person> vec; 
    public Vote(){ 
     vec = new Vector<Person>(); 
    }  
    public void addElem(Person p) 
    { 
     v.addElement(p); 
    } 

} 

我想从以下任何一个搜索矢量:

firstName,lastName,age. 

搜索后,结果应该是索引整个矢量元素。我试图用vec.firstName.contains()做到这一点,但这不起作用。有什么方法可以搜索矢量吗?

+0

我不明白你所说的“该索引的整个向量元素”的意思。你应该指定一个输入/输出的例子。 – I82Much

+0

尝试覆盖人的toString()以打印您需要的信息 – upog

+0

如果我搜索firstName并且它在向量中找到,那么它应该返回名字,姓氏和匹配的名字的年龄 – user1690394

回答

4

要做的最简单的事情是迭代遍历矢量的元素并依次进行比较。

public Person searchByFirstName(Vote v, String firstName) { 
    for (Person p : v.vec) { 
    if (p.firstName.equals(firstName)) { 
     return p; 
    } 
    } 
    return null; 
} 

你可以对每种你想要搜索的东西做同样的事情。显然这个例子是完全匹配的;您可以通过查看String类提供的方法来实现不区分大小写的匹配或前缀匹配。

+1

难道你不认为p.firstName 。应该是p.getFirstName()? –

+1

不在他的例子中 - 他没有显示任何获得者。一般来说,使用getter比依靠公共信息更好。他的代码中不清楚他是否将这一切归入一个文件中。 – I82Much

+0

如果我有一个包含firstName,lastName,Age的文件,它随机写入,我试图在向量中搜索它。我将不得不写如果循环和线性搜索如上所示? – user1690394

0

创建一个person对象,并使用:的
vec.contains(personObj)
代替
vec.firstName.contains()