I found that EnumMap T[] toArray(T[] var2) have this implementation:
public <T> T[] toArray(T[] var1) {
int var2 = this.size();
if (var1.length < var2) {
var1 = (Object[])((Object[])Array.newInstance(var1.getClass().getComponentType(), var2));
}
if (var1.length > var2) {
var1[var2] = null;
}
return (Object[])this.fillEntryArray(var1);
}
I don't understand what is really means:
if (var1.length > var2) {
var1[var2] = null;
}
If our array for example String[5]
and we tries:
enum myKeys{ONE, TWO, THREE};
EnumMap myEnum = new EnumMap<myKeys, String>(myKeys.class);
myEnum.put(myKeys.ONE, "1");
myEnum.put(myKeys.TWO, "2");
myEnum.put(myKeys.THREE, "3");
final Object[] objects = myEnum.entrySet().toArray(new Object[8]);
for (Object o: objects) {
System.out.println(o);
}
Output is:
ONE=1
TWO=2
THREE=3
null
null
null
null
null
1) What is the purpose of the design EnumMap T[] toArray(T[] a) instead of toArray()?
2) Why used
if (var1.length > var2) {
var1[var2] = null;
}
Is it for mark N+1 element is null for the iterator?