Ayuda para convertir contenido de hashtable en una secuencia de caracteres

brainiac
20 de Enero del 2004
Hola.
Estoy escribiendo un pequeño programa en java que carga usa secuencia de caracteres en una hashtable para poder cambiar caracteres en una posicion especifica de una manera rápida y comoda.
Mi problema surge al intentar guardar el contenido de la hashtable como secuencia de caracteres. si utilizo la funcion toString() me devuelve la secuencia pero cono comas separando cada caracter, si intento guardarlo con write object me guarda un monton de cosas aparte de los caracteres, y la unica forma que he encontrado es ir tomando el contenido de cada posicion del hashtable (mediante un loop for) y agregandolo en una string. El problema de este metodo es que para secuencias muy larga se hace muy lento a la hora de guardar un archivo. Alguna sugerencia de que otro sistema podría probar????
Gracias
P.D. este es el codigo a modificar:
void mnGuardar_actionPerformed(ActionEvent e){
int salto=0;
String secuencia="";
fd.setMode(fd.SAVE);
fd.show();
if(fd.getFile()==null)return;
try{
FileOutputStream fo=new FileOutputStream(fd.getDirectory()+"\"+fd.getFile());
secuencia=">";
secuencia+=textnombre.getText()+"n";
textSecuencia.append("nGuardandon");
for (int i=0;i<datos.size();i++){
secuencia+=datos.get(new Integer(i));
salto++;
// textSecuencia.append(".");
if(salto%60==0){
// textSecuencia.append("n");
secuencia+="n";
}
}
textSecuencia.append("Archivo guardadon");
fo.write(secuencia.getBytes());
fo.close();

}catch(IOException ex){
System.out.println("Error al escribir archivo");}
}


Heihachi
20 de Enero del 2004
Puedes probar a sustituir la Hashtable por un ArrayList y usar StringBuffer dentro del bucle for.

Por cada "secuencia+=datos.get(new Integer(i));" creas un nuevo Integer y un nuevo String

Yo probaría algo así:
StringBuffer aux=new StringBuffer(secuencia);
for (int i=0;i<datos.size();i++){
aux.append((char)datos.get(i));
salto++;
// textSecuencia.append(".");
if(salto%60==0){
// textSecuencia.append("n");
aux.append('n');
}

con datos un arraylist de char (no de String)

También puedes probar con el método toString de la hashTable y s.replaceAll(",","") para quitar las comas.

Creo que el replaceAll no aparece hasta el JDK1.4

Saludos!