2014-02-16 192 views
1

我有一個ArrayList在其中產生,並通過此代碼存儲在一個對象搜索對象的ArrayList有沒有辦法做到這一點 ? 如果沒有,除了使用ArrayList之外,還有其他方法可以幫助我做到這一點嗎?通過對象的屬性

會員類用於通過name如果name查找member

package com.fawzyx.movie_rental_store; 

public class Member extends Customer { 

    String id; 
    String mail; 
    String ccard; 
    String address; 

    public Member (String name, String id, String mail, String ccard, String address) { 
     this.name = name; 
     this.id = id; 
     this.mail = mail; 
     this.ccard = ccard; 
     this.address = address; 
    } 

    public String getName() 
    { 
     return name;  
    } 
} 
+0

名稱是獨一無二的? – gunar

+0

我會在驗證中考慮這個問題 – Fawzinov

+0

如果您發現至少有兩個同名的條目會發生什麼?搜索仍然有效嗎? – gunar

回答

0

方法是獨特的:

public Member findMemberByName(String name) { 
    // go through list of members and compare name with given name 
    for(Member member : members) { 
     if (member.getname().equals(name)) { 
      return member; // return member when name found 
     } 
    } 
    return null; // return null when no member with given name could be found 
} 

並且如果name不是唯一的方法返回一個ArrayList包含所有匹配

public ArrayList<Member> findMemberByName(String name) { 
    ArrayList<Member> matches = new ArrayList<Member>(); 
    // go through list of members and compare name with given name 
    for(Member member : members) { 
     if (member.getname().equals(name)) { 
      matches.add(member); // adds matching member to the return list 
     } 
    } 
    return matches; // return the matches, which is empty when no member with the given name was found 
} 

爲了在另一個Activity中這樣做,您必須將members傳遞給此其他活動。請參閱Starting another Activity

+0

.name是電影類中的一個函數,它返回名稱..我是嗎? – Fawzinov

+0

我不知道,你告訴我,這是你的代碼。在你的問題中提供你的成員類以獲得更準確的答案。 – ntv1000

+0

@Fawzinov在之前的評論中表示,Name不是一個獨特的屬性。因此,這種方法只會返回名稱值中的第一個匹配的名稱,而不是所有名稱爲'name'的項目。 – GoRoS

0

如果您要搜索一次,只需循環。如果您將列表一次並搜索多次,您可能需要創建一個單獨的哈希映射,其中名稱作爲鍵和對象列表作爲值。然後,您可以簡單地查找關鍵字以獲取匹配的每個對象。