Hola erivalo
Lo que le ocurre a tu código es que cuando entras en el arraySet con su iterador it, utilizas dos veces it.next() antes de leer datos.
Así pues, el primer dato que lees no es el primero sino el segundo pues has dado dos saltos.
El problema está en las líneas
25 Iterator<String> itString = it.next().iterator();
36 Iterator<Integer> itInteger = it.next().iterator();
donde antes de leer, ya estas saltando al siguiente elemento usando it.next()
Solución: Cuando obtienes el primer elemento con el método it.next(), lo guardas en una variable/objeto temporal. Y usas ésta para hacer todas las consultas y asignaciones.
En cada ciclo del while se ejecutará el método it.next() dando acceso al siguiente elemento del array y así hasta terminar.
Compilando tu código he visto que dará un warning en las líneas 25 y 36
Eliminando el tipo de objeto en la declaración se soluciona.
Ejem.
Iterator<String> itString = it.next().iterator();
cambiarla a:
Iterator itString = it.next().iterator();
¿Por qué. Te preguntarás?. Pues porque Java en tiempo de compilación ve que este iterador it dará acceso a dos tipo de datos (String e Integer) y que en estas declaraciones puede no recibirse el objeto adecuado. Por ello el warning.
La solución, la que apuntamos. Elminar el tipo de objeto en la declaración y, ya en tiempo de ejecución Java asignará dinámicamente el tipo adecuado.
Saludos