2016-08-18 80 views
-3

我需要比較2個相同類型對象的列表。我能得到哪個方法最快的建議嗎?比較2對象列表java

E.g

public class Cars { 
String engine; 
String brand; 
String etc ..; 

我方法compareCars(列表中的一個,列表B),如果有一個單次發生在其中的汽車在兩者相同,則返回true。

+0

請發表您的compareCars方法的代碼。此外,澄清你想知道什麼,因爲這是非常不明確的 –

+1

它取決於數據的特點...如果列表具有相同的大小和相同的順序,那麼你必須比較[i]和b [i]在set(0,N)中...看起來像一個基本的編程練習 – Selvin

+0

我實際上沒有比較方法的代碼,這是我的問題如何比較2個對象列表。但我想也許使用: 爲 (在列表中每節車廂)爲(名單B.每節車廂) 如果等號{// 做一些 } – pVas94

回答

0

首先,班級名稱應該是單數 -

I suggest the following code. 

你可以重寫hashCode()和equals()來獲得比較兩輛汽車,如你所願。

boolean compareCars(List<Car> cars1, List<Car> cars2) { 
    boolean isSingleOccuranceMatch = false; 
    for (Car car : cars1) { 
     if (cars2.contains(car)) { 
      isSingleOccuranceMatch = true; 
      break; 
     } 
    } 

    return isSingleOccuranceMatch; 
} 

不需要變量isSingleoccuranceMatch。

This is just for readability. 

您可以直接返回true而不是break並在完成所有迭代後返回false。

使用Java8,無需任何方法

cars1.stream().filter(car1 -> cars2.contains(car1)).count() > 0 
+0

謝謝,作品完美無缺 – pVas94