2014-04-02 135 views
1

我必須爲空兩Array校驗值相同

String a[]={"book","pen"}; 
String b[]={"pen","pencil","bottle","book","bag"}; 

我要檢查array barray a之間,相同的價值,我已經嘗試用這樣的:

for (int i=0; i < b.length; i++){ 

      for (int j=0; j < a.length(); j++){ 
       if(!(a.contains(b[i]))){ 
      //delete if not same 
      } 

所以我的問題,如何檢查兩個arraylist android之間相同的值?

+0

您不必爲'contains'使用2'for loops' ...因爲只有1個數組循環..對於'ArrayList'它幾乎是相同的。也'包含'功能應該做的伎倆 – Coderji

+0

@Coderji,因爲它們之間的長度不同 – Menma

+0

你不移動'a'數組(你沒有使用'a [j] .contains..')..你正在檢查' b'值與整個'a''a.length'時間..默認情況下包含函數循環通過'a'。 – Coderji

回答

3

試試這個..

for (int i=0; i < b.length; i++){ 

     for (int j=0; j < a.length(); j++){ 
      if(!(a[j].equals(b[i]))){ 
       //do something for not equals 
      }else{ 
       //do something for equals 
      } 
     } 
} 

或者

ArrayList<String> A_arraylist = new ArrayList<String>(Arrays.asList(a)); 
ArrayList<String> B_arraylist = new ArrayList<String>(Arrays.asList(b)); 

for (int i=0; i < A_arraylist.size(); i++){ 
    if(B_arraylist.contains(A_arraylist.get(i))){ 
      //do something for equals    
    }else{ 
      //do something for not equals 
      int index = B_arraylist.indexOf(A_arraylist.get(i)); 
      B_arraylist.remove(index); 
    } 
} 

編輯:

B_arraylist.retainAll(A_arraylist); 
+0

爲什麼不寫'B_arrayList.retainAll(A_arraylist);'?不要重新發明輪子! –

+0

@Hariharan現在它不刪除任何東西 – Menma

+0

@NenMa只是使用'B_arraylist.retainAll(A_arraylist);'看看我的編輯。 – Hariharan

2

你可以這樣做。使用.equals()方法String API

for (int i=0; i < b.length; i++){ 

    for (int j=0; j < a.length; j++){ 
     if(a[j].equals(b[i])){ 
      // a[j] matches b[i]. Perform operation when they are equal        
     }else{ 
      // it doesn't match 
     } 
    } 
} 
+0

如果我想刪除,如果b!= a? – Menma

+0

您可以創建一個臨時列表,您只能放置滿足條件的值。除了將數組轉換爲列表並在檢查條件之後創建結果列表之外,您可以從數組本身創建結果列表。 – Keerthivasan

1

試試這個。我用它爲int數組,你可以修改它串

 int[] arr1 = {4,7,3,9,2}; 
     int[] arr2 = {3,2,12,9,40,32,4}; 
     for(int i=0;i<arr1.length;i++){ 
      for(int j=0;j<arr2.length;j++){ 
       if(arr1[i]==arr2[j]){ 
        System.out.println(arr1[i]); 
       } 
      } 
     } 

或者,如果您使用的ArrayList那麼試試下面

public static void main(String[] args) { 
     List<String> list_One = new ArrayList<String>(); 
     List<String> list_two = new ArrayList<String>(); 

     list_One.add("A"); 
     list_One.add("B"); 
     list_One.add("C"); 
     list_One.add("D"); 

     list_two.add("E"); 
     list_two.add("F"); 
     list_two.add("C"); 
     list_two.add("D"); 


     System.out.println("is list_two Containts List_one Elements ?"); 

     Iterator<String> itr =list_two.iterator(); 

     while(itr.hasNext()){ 
      String list_two_element = itr.next(); 

      if(list_One.contains(list_two_element)){ 
       System.out.println("Matching Element found in list two : " + list_two_element); 
      } 

     } 
    } 

希望這將有助於周到,謝謝

1

你可以嘗試使用Collections現在重命名爲Guava

here獲取jar文件

由於數組列表的長度是不同的東西,你可以做的是:

1.Get陣列具有最大尺寸

int sizeOfArrayOne = array.length; 
int sizeOfArrayTwo = array2.length; 

的lengh比較大小

2。一旦你獲得哪個陣列是最大的,你可以用番石榴爲你找到另一個陣列的值,如:

String value = Iterables.find(arrayWithLargerSize, new SearchForString(arrayOfSmallerSize[i]),null); 
if(value == null) { 
    // the string is not present in the array 
}else { 
    // the string is present in the array 
} 

在較小陣列的循環內運行此塊(i表示循環的i)。

3.Write搜索謂詞類是這樣的:

class SearchForString implements Predicate<String> { 
    // override the methods here 
    // also ensure that you implement the correct predicate 
    // one that belongs to the guava collection 
} 

希望這條線索就足夠了!

1
String a[]={"book","pen"}; 
String b[]={"pen","pencil","bottle","book","bag"}; 
for(int i=0;i<b.lenght;i++){ 
String firstValue=b[i]; 
for(int j=0;j<a.lenght;j++){ 
String secondValue=a[j]; 
if(firstValue.equalsIgnoreCase(secondValue)){ 
// item matches; 
} 
} 
}