Оптимизированное решение для обхода списка объектов, и каждый объект имеет список объектов - PullRequest
0 голосов
/ 28 апреля 2020

Мне нужно оптимизированное решение одной проблемы, с которой я столкнулся:

Есть объект A, который имеет несколько полей:

class A{
    String city;
    String state;
    String phoneNo;
    // other fields
}

Есть еще один список объектов Bi.e:

class B{
    String name;
    int id;
    List<C> Objects;
}

Class C{
    // having similar member variable as in A
    String city;
    String state;
    String phone;
    // other fields
}

Теперь проблема в том, что я хочу перебрать список объектов B и получить список объектов C и сравнить эти детали с объектом A.

Basi c O (n ^ 2) решение, на мой взгляд, таково:

for(B b : bs){
   List<C> objects= b.getObjects()
   for(C c : objects){
      if(c.getState.equalsIgnoreCase(A.getState)){
      }
      .... similar condition to apply ...
   }
} 

В конце мне нужно, чтобы весь объект List of B соответствовал переменной-члену A, и я хочу уменьшить сложность, главным образом, как во времени, так и в пространстве.

1 Ответ

0 голосов
/ 28 апреля 2020

Вы можете сделать свой класс C расширяющим класс А, для начинающих.

class A {
    String city;
    String state;
    String phone;
    // other fields of class A

    boolean customEquals(A other) {
        // here you can compare fields specific for class A
    }
}

class C extends A {
    // fields specific for class C
}

И затем использовать метод customEquals при сравнении объектов в l oop:

for (B b : bs) {
    List<C> cs = b.getCs();
    for (C c : cs) {
        if(a.customEquals(c)) {
            // here you have your b object you are looking for
            // further loop iterations can be ommitted at this point
        }
    }
}
...