La función hashmap.get(nombre).intValue() devuelve el entero que se asocio al crear el hashmap y como la lectura es secuencial desde que se abre el archivo lee la posición 0 objeto 0, itero las veces que sea necesarias para encontrar el objeto a mostrar.
Prueba este código tal cual está solo hice cambios en la clase Serializador, para acceder a algún dato en particular seria ser.leerArchivo("objeto.mio","Juan"); si el nombre no existe en el hasmap te lo indicara con un System.out.print.
Código
import java.io.*; import java.util.HashMap; import java.util.Map; public class Serializador{ // Escribe un objecto en un archivo // Lee un objecto que este guardado en un archivo private Map<String, Integer> hashmap = new HashMap<String, Integer>(); private static int con = 0; // Al metodo le pasamos el objeto que queremos serializar y lo guardará en el archivo que se le especifique al FileOutputStream (en este caso "objeto.mio") try{ if(escritorArchivo == null) escritorArchivo.writeObject(objeto); hashmap.put(((Contacto)objeto).getNombre(), con++); fnfex.printStackTrace(); ioex.printStackTrace(); } } Contacto contacto = null; try{ if(lectorArchivo == null) while(true){ contacto = (Contacto) lectorArchivo.readObject(); } { e.printStackTrace(); e.printStackTrace(); } return contacto; } Contacto contacto = null; int contador = 0; try{ if(hashmap.get(nombre)!= null){ int numero = hashmap.get(nombre).intValue(); while(contador <= numero){ contacto = (Contacto) lectorArchivo.readObject(); contador++; } } else{ } lectorArchivo.close(); { e.printStackTrace(); e.printStackTrace(); } return contacto; } }