2010-06-08 34 views

回答

8

號你必須定義自己的contains方法,將有ArrayList之間進行迭代,並使用String類的equalsIgnoreCase方法比較值。

編輯:我不想粗魯,但問題很明顯:傢伙想要使用contains方法。因此,在添加元素之前,他不能/應該使用toLowerCase,原因很多:例如,他可能需要原始String(不是小寫的)。另外,當我們談論contains方法時,我們關注的是元素而不是索引(就像某人在幾分鐘前回答的那樣)。

+0

嘿!沒問題!感謝大家的快速解答! – 2010-06-08 04:36:35

2

我有這樣一個問題,我用這個解決方法有二分查找,似乎工作:

ArrayList al= new ArrayList(); 
al.Add("Elem1"); 
al.Add("Elem5"); 
al.Add("Elem3"); 
al.Sort(); 

if (al.BinarySearch("elem3", new CaseInsensitiveComparer()) > 0) 
     MessageBox.Show("Exists"); //this case 
else 
     MessageBox.Show("Not found"); 
2

正如@Cristian曾表示,有實現這個原始方法。我想我會發布我寫的小實用方法,以防止它是有用的複製和粘貼:

public static boolean ContainsCaseInsensitive(ArrayList<String> searchList, String searchTerm) 
{ 
    for (String item : searchList) 
    { 
     if (item.equalsIgnoreCase(searchTerm)) 
      return true; 
    } 
    return false; 
}