2016-08-18 8 views
-3

Мне нужно сравнить 2 списка одного и того же типа объектов. Могу ли я получить предложение, которое является самым быстрым методом.Сравнить 2 Список объектов java

например

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

Я получил метод compareCars (список А, список б), которая возвращает истину, если существует единственный случай, в котором автомобили в обоих одинаковы.

+0

Пожалуйста, пост код вашего метода compareCars. Кроме того, уточните, что вы хотите знать, потому что это очень неясно. –

+1

Это зависит от характеристик данных ... если списки имеют одинаковый размер и одинаковый порядок, тогда вы должны сравнить [i] с b [i] для каждого i в наборе (0, N) ... выглядит как базовое программирование excercise – Selvin

+0

У меня на самом деле нет кода для метода сравнения, это мой вопрос, как сравнить 2 списка объектов. Но я думал, может быть с помощью: для (каждого автомобиля в списке а) для (каждого автомобиля в Список б) если равно { // сделать что-то } – 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