2011-04-11 89 views
0

我看了看這裏的職位與排序和搜索做的,但似乎無法讓我的數組列表進行排序或使用排序和搜索一個ArrayList

Collections.sort(myarraylist); 

存儲在數據搜索僅當用戶在GUI中的文本字段中輸入數據時才存儲數組列表。我已經使用getText存儲數據(用戶輸入到JTextFields)在arraylist中。用戶添加的每一個新接觸到按姓氏ArrayList中後

的用戶應該能夠進入一個名字或姓氏爲

String searchstring = JOptionPane.showInputDialog("Enter Name"); 

排序應該做的。

所以我的問題是:

  1. 我如何排序的數組列表?
  2. 如何搜索數組列表?

請你可以告訴我如何繼續,因爲我真的卡住!

+3

看「相關」列的權利。 – 2011-04-11 23:45:06

+1

如果有什麼的相關列不工作,發佈我們的一個小程序,我們可以編譯和運行說明了這個問題。 – corsiKa 2011-04-11 23:53:33

+0

我有幾個不同的類。大多數類包含的代碼來構建GUI的添加新聯繫人,搜索1,搜索2,導入和經濟學要接觸到vCard和TXT格式。我也有一個Contacts類,我有構造函數來獲取用戶從GUI中輸入的文本。 ArrayList與由主菜單界面組成的主菜單類屬於同一個類。 – Computeristic 2011-04-11 23:56:40

回答

1

ArrayList myarraylist是持有聯繫人,我將假設至少有兩個String字段(姓和名)。如果您正在比較兩個聯繫人,那麼您如何決定哪一個首先進入排序列表?

我的猜測是,你有某種類型的Contact類型,它包含所有這些字段。

您需要做的是實現與Contact類型的Comparable接口,以便排序算法可以找出兩個給定聯繫人中的哪一個先到達列表中。

如果您聲明Contact類型,則需要添加兩項內容:implements Comparable聲明和int compareTo(Object)方法的定義。

所以,你Contact類將是這個樣子:

public class Contact implements Comparable{ 
     private String firstName, lastName; 
     public int compareTo(Object o){ 
      return lastName.compareTo(((Contact)o).getLastName()); 
     } 
     public String getLastName(){ 
      return lastName; 
     } 
     //the rest of your Contact class stuff here. 
} 
+0

...然後您需要將實現作爲參數傳遞給排序方法。 – StriplingWarrior 2011-04-12 00:07:43

+0

是的,我有一個聯繫人類。聯繫人是用戶輸入數據後保存所有JTextFields數據的類型。我已閱讀了Comparable,但我對如何在程序中使用它感到困惑。我是否將它添加到按鈕的ActionListener?基本上,我希望用戶使用輸入框輸入聯繫人的姓名,然後我希望程序在arraylist中搜索,直到找到用戶想要查找的聯繫人。然後我想從數組列表中刪除特定的聯繫人。你覺得我應該怎麼做? – Computeristic 2011-04-12 00:11:30

0

我如何排序的數組列表?

執行Comparable接口並覆蓋compareTo方法,用於進入列表的對象。

如何搜索ArrayList的?

推出自己的搜索程序 - 你嘗試過這麼遠嗎?最簡單的方法是遍歷列表中的每個元素。