2013-09-28 66 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()