2013-04-05 97 views
-1

是否有任何簡單的方法可以搜索arraylist? 我看到有很多事情喜歡的removeAll(集合做),並添加()是有這樣的事,通過列表搜索在arraylist中查找並顯示元素

+0

而問題是......? – 2013-04-05 12:40:31

+1

你想做什麼是搜索特定客戶的列表?只需遍歷列表並在循環內添加一個IF語句,將當前的customerID與您正在查找的那個進行比較 – 2013-04-05 12:41:57

+0

您可以將代碼過濾到sscce(http://sscce.org/)嗎? – Aboutblank 2013-04-05 12:56:03

回答

2

添加一個方法你UserArchive類,通過列表循環和每個用戶ID進行比較。到

public User findById(int id) { 
    for (User u : list) { 
     if (u.getCustomerID() == id) { 
      return u; 
     } 
    } 
    return null; // or empty User 
} 
+0

我可能是一個白癡,或者只是累了。無論如何,這種方法如何應用於SalesWindow類? – user2248471 2013-04-05 13:48:02

+0

@ user2248471您需要向該類添加邏輯,該類在使用單擊「findCustomer」按鈕時執行某些操作。這就是你稱之爲這種方法的地方。 – 2013-04-05 16:14:41

+0

這就是我得到的。我得到的問題是我無法從用戶轉換爲字符串。下面是我在SalesWindow中獲得的代碼。任何投入? public void findCustomer() \t { \t \t String firstname = firstNameField.getText(); \t \t \t 如果\t \t {\t \t \t \t字符串結果= list.findById(名字)(firstname.equals( 「」)!); \t \t \t outputText.setText(result); \t \t} \t} – user2248471 2013-04-07 13:29:05

0

的一個傳入你的選擇做了,如果在你的循環,並期待該ID在環用戶的每個實例:

for (User user : list) { 
    if (user.getCustomerID == [The id to lookup]) { 
     // Whatever you want to do 
    } 
} 

或者你可以重載equals ()方法爲你呃類和解鎖 List.contains函數,如果你比較另一個用戶的實例,而不是CustomerID。

的平等功能頭說:

返回true如果此列表包含指定的元素。更多 正式返回true,當且僅當此列表包含至少一個 元素e使得(o == null?e == null:o.equals(e))。

這就是爲什麼你必須覆蓋等於你的對象。很多函數使用equals()作爲對象,如果你關心的結果是好的,你必須重寫函數。

// Or whatever instance of User you want to compare 
User custToLookup = new User(idToLookup, "", "", ""); 

// You could stop here if you only want to know if the instance exist in the list 
if (list.contains(custToLookup)){ 
    for (User user : list) { 
     if (user.equals(custToLookup) { 
      // Whatever you want to do 
     } 
    } 
} 

*編輯:忘記一些詞