tl;dr; If somebody know how to create an object at a particular index (given the number/identifier), it would help me to use a Map instead of a List?

Thinking about that, a List has an advantage on Map, it's ordered.  When I'm updating objects, it's of no-interest but when I'm creating objects, it is useful.  I'll try to explain.

Imagine I send these 2 parameters `XWiki.XWikiRights_0_users=foo` and `XWiki.XWikiRights_1_users=bar` in a document that doesn't contains `XWiki.XWikiRights` objects. 

Problem: `entrySet()` or `keySet()` may provide them in the inverse order if I use a Map (the second parameter then the first).  However, I create a new object only if the identifier (in this case `1`) is equals to the number of the existing objects (of the same kind).  In this example, `1` is different to this number (which is `0` since there is not instance of this object at the time) so I will ignore it.  Then, going on the next iteration (`XWiki.XWikiRights_0_users=foo`), I will create the object. Result: only 1 object created where 2 should have been created.

My choice about not creating an object if the identifier/number is too high is to avoid creating 'holes' in the xObjects list of XWikiDocument.