2016-08-18 97 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