Tengo un hashSet de objetos Cosa por ejemplo. (No puedo elegir otro tipo de almacen de datos)
Casa Cosa tiene una cadena que es su identificador y luego un hashSet para tener los que cuelgan de el.
Quiero ordenarlos por su clave, en orden alfabetico. Entonces lo que se me habia ocurrido es sacar todos los objectos del hashSet a una lista y ordenarlos, entonces borro el hashSet y los añado de nuevo ordenados. ¿Que os parece?
Me falta decir que el atributo sufijos (en plural) es un set<Nodo> declarado hashSet<Nodo>()
Código:
Y os pego tambien los metodos de borrar todos y comparar:public void setSufijos(Nodo sufijo){ int x = 0, tam; Iterator<Nodo> iterador; Nodo nodo, nodoAux; List<Nodo> lista = new ArrayList<Nodo>(); if(sufijos.isEmpty()){ /*Si esta vacio el set de sufijos*/ sufijos.add(sufijo); } else{ /*Si no esta vacio*/ iterador = sufijos.iterator(); while(iterador.hasNext()){ nodo = iterador.next(); lista.add(nodo); } /*Compruebo que no sea el ultimo a añadir*/ if(sufijo.compareTo(lista.get(lista.size() - 1)) < 0){ lista.add(sufijo); } else{ tam = lista.size(); while(x < tam){ if(sufijo.compareTo(lista.get(x)) < 0){ nodoAux = lista.set(x, sufijo); sufijo = nodoAux; } x++; } lista.add(sufijo); /*Borramos el set*/ this.deleteSufijosAll(); /*Añadimos toda la lista ordenada*/ tam = lista.size(); x = 0; while(x < tam){ sufijos.add(lista.get(x)); } } } }
Código:
Pero falla, porque si quito esto y sin mas pongo que lo añada no casca, pero al hacer esto si y no se porque... public boolean deleteSufijosAll(){ sufijos.clear(); return true; } public int compareTo(Nodo n){ return this.getClave().compareToIgnoreCase(n.getClave()); }