for (int j = 0; j < arraylistaDeTiposDeAtributosDelVO.size(); j++)
              {
                String cadenaOriginal = "";
                String cadena1 = "";
                String cadena2 = "";
 
                cadenaOriginal = arraylistaDeTiposDeAtributosDelVO.get(j).toString();
                int inicioConversion = 0;
                int iMayusculasEncontradas = 0;
                String sGuionBajo = "_";
                for (int k = 0; k < cadenaOriginal.length(); k++)
                  {
                    char miChar = cadenaOriginal.charAt(k);
 
                    if (Character.isUpperCase(miChar))
                      {
                        String miChar2 = Character.toString(miChar);
                        String miChar3 = sGuionBajo + miChar2;
                       
                        cadena1 = cadenaOriginal.substring(inicioConversion, k + 1);
                       
 
                      
 
                        //Eliminamos el character en Uppercase y los sustituimos por _caracter en uppercase
                        int iCorte = cadena1.length() - 1;
                    
                        cadena1 = cadena1.substring(0, iCorte);
                        cadena1 = cadena1 + miChar3;
                        //cadena1 = cadena1.replaceFirst(miChar2, miChar3); //Da problemas si hay dos uppercase del mismo miChar
                        //                        
                        //Si es la primera conversion
                        if (inicioConversion > 0)
                          {
                            cadena2 = cadena2 + cadena1.substring(1);
                          }
                        else
                          {
                            cadena2 = cadena2 + cadena1;
                          }
                        inicioConversion = k;
                        iMayusculasEncontradas++;
 
                      }
                  }
 
/**La cadena queda truncada justo despues de la ultima uppercase.
Ejemplo. miCasa queda como mi_C 
Esto sirve para rellenar el trozo de cadena que falta***/
                if (cadena2.length() - iMayusculasEncontradas != cadenaOriginal.length() && iMayusculasEncontradas != 0)
                  {
                    String cadenaAAnyadir = cadenaOriginal.substring(
                        cadenaOriginal.length() - iMayusculasEncontradas
                            - (cadenaOriginal.length() - cadena2.length())).toUpperCase();
                    cadena2 = (cadena2 + cadenaAAnyadir);
 
                  }
                /**Si no tiene mayusculas usamos el mismo nombre en mayusculas**/
                if (iMayusculasEncontradas == 0)
                  {
                    cadena2 = cadenaOriginal.toUpperCase();
                  }
 
                arrayDeCadenas.add(cadenaOriginal + "|" + cadena2.toUpperCase());
              }
 
 
          }