Вложенные RepeatingGrps в проблеме дизайна Java - PullRequest
0 голосов
/ 25 мая 2011

РЕДАКТИРОВАТЬ: У меня есть два объекта, я должен сопоставить один с другим. Проблема в том, что атрибуты не совсем совпадают. Объект, из которого я картирую, плоский, имеет множество геттеров и сеттеров. Все очень приятно и легко работать. Я должен сопоставить это с Объектом, который имеет несколько иную структуру, внутри Групп, таких как SecAltIDGrp[], и атрибутов, таких как те, что ниже. Который устанавливается с помощью

ObjectToMapTo.setSecAltIDGrp(SecAltIDGrp[]) 

У меня есть несколько повторяющихся групп, которые я должен сопоставить со значениями из получателя из плоского объекта, проблема в следующем. Объект, который должен быть отображен, имеет Array [] s Grps, который должен заполняться различными различными получателями из плоского объекта. Я не могу придумать чистый способ сделать это.

Например, у меня есть код массив комментариев, который имеет следующую структуру.

    public SecAltIDGrp[] populateComments(int NoComments)
    {

        SecAltIDGrp[] x = new SecAltIDGrp[NoComments];
        for(int i; i < NoComments; i++)
        {
            x[i].setAltID(obj.getVal);
            x[i].setAltIDSource(arg0, arg1);
        }
    }

однако каждый элемент массива заполняется другим геттером из плоского объекта ...

Я не могу ничего сделать, вставив в массив оператор if и передав объект в качестве параметра. Это довольно ужасное кодирование.

Я должен сделать это для ряда таких групп. С некоторыми из установщиков элементов массива, требующих сами массивы.

1 Ответ

0 голосов
/ 25 мая 2011

Вместо использования Array, попробуйте использовать HashMaps, которые помогут вам легче передавать / хранить объекты.Если вас не очень интересуют ключи hashmap, вы можете просто использовать ArrayList.

HashMap будет хранить требуемую группу вместе с ключом.Ключ здесь будет аналогичен массиву Index, который вы планировали использовать.

public HashMap< Integer , SecAltIDGrp > populateComments( int NoComments )
{
    HashMap< Integer , SecAltIDGrp > hmSec = new HashMap< Integer , SecAltIDGrp >();
    for(int i; i < NoComments; i++)
    {
          SecAltIDGrp x = new SecAltIDGrp();

          x.setAltID(obj.getVal);
          x.setAltIDSource(arg0, arg1);

          hmSec.put( i , x );
    }

    return hmSec;
}

public class SecAltIDGrp{
   String altId = "";
   String altIdSource = "";

   public void setAltIDSource(  String altIDSource )
   {
       this.altIdSource = altIDSource;
   }

   public void setAltID( String altId )
   {
        this.altId = altID;
   }
}

Убедитесь, что получатели и установщики также будут иметь соответствующие параметры для соответствия универсальным шаблонам, чтобы предотвратить любые предупреждения во время компиляции.

public class ObjectToMapTo
{

   private HashMap< Integer , SecAltIDGrp > hmPrivGrp = new HashMap< Integer,SecAltIDGrp >();

   public void setSecAltIDGrp(  HashMap< Integer , SecAltIDGrp > hmSecAltIDGrp)
   {
          this.hmPrivGrp = hmSecAltIDGrp;
   }
}

это то, как вы устанавливаете определенную группу.хранить хэш-карту вместо массива.ObjectToMapTo.setSecAltIDGrp (hmSec);

Вы сможете выполнять итерации по хеш-карте и получать отдельные SecAltIDGrp

Некоторые материалы для чтения:
http://www.javadeveloper.co.in/java-example/java-hashmap-example.html

...