How do you ensure that method is called only once? Are you recording when it is called? Are you throwing an Exception if it is called twice?
Why are you not using the clone() method of the array passed? Why not add the array elements to a List, ignoring nulls?
You ought to declare those loop variables in the loop header.
Cata Alex wrote:Can anyone help me redesign this part of code or give me some tips? I want it to work the same but to be much easier to read.
Well the best piece of advice I can give you is to use Lists (java.util.List) instead of arrays. You're writing a lot of code to do things (eg, replace null requirements by empty requirements) that is done automatically by a List class (eg, ArrayList).
Isn't it funny how there's always time and money enough to do it WRONG?