2016-10-17 58 views
-1

我有兩個對象的數組: ArrayList<Object> list1ArrayList<Object> list2。我的代碼如何比較對象數組之間的字段?

實施例(簡化):

Class Object1 { 
String str1 = "example"; 
} 

Class Object2 { 
String str2 = "example"; 
} 

ArrayList<Object> list1 = new ArrayList<>(); 
list1.add(new Object1()); 
ArrayList<Object> list2 = new ArrayList<>(); 
list2.add(new Object2()); 

問題:我需要比較字段str1和STR2(Object1和Object2的之間的位置在不同的陣列)

+1

讓'Object1'和'Object2'實現其聲明中,每個類返回的字符串getter方法相同的接口。然後讓兩個類實現Comparable接口,其中每個類將其字符串與公共接口getter方法的返回值進行比較。 –

+0

可能重複[Java比較兩個列表的對象值?](http://stackoverflow.com/questions/16207718/java-compare-two-lists-object-values) – saurav

回答

0

爲什麼你不能迭代1列表的任何理由,調用該字段的getter並將它與另一個列表中的相應對象進行比較?

for (int i = 0; i < list1.size(); i++) { 
    Object obj1 = list1.get(i); 
    Object obj2 = list2.get(i); 
    System.out.println(obj1.str1.equals(obj2.str2)); // Better use getter here instead 
} 
+0

在這種情況下,我無權訪問getter。什麼可能是錯誤的? (此代碼用於方法不是「主」) – Gleb

+0

@GlebTserr從技術上講,什麼都沒有。但在設計方面,這是不好的做法,應該避免它破壞封裝。 –

0

可以比較list1的。使用list2.get(0).str2獲取(0).str1。如果你使用for循環,代替get(0),使用get(i)。

+0

在這種情況下,我無法訪問變量。 – Gleb

0

您可以比較str1str2

list1.get(indexOfObject1InList1).str1.equals(list2.get(indexOfObject2InList2).str2) 
+0

我沒有通過操作員「指向」變量的權限。什麼可能是錯誤的? – Gleb