Foros del Web » Programación para mayores de 30 ;) » Java »

Ordejar hashSet mediante una lista

Estas en el tema de Ordejar hashSet mediante una lista en el foro de Java en Foros del Web. Buenas. Tengo un hashSet de objetos Cosa por ejemplo. (No puedo elegir otro tipo de almacen de datos) Casa Cosa tiene una cadena que es ...
  #1 (permalink)  
Antiguo 04/06/2010, 02:25
 
Fecha de Ingreso: mayo-2010
Mensajes: 17
Antigüedad: 13 años, 11 meses
Puntos: 0
Ordejar hashSet mediante una lista

Buenas.

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:
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));
				}
			}
		}
    }
Y os pego tambien los metodos de borrar todos y comparar:
Código:
public boolean deleteSufijosAll(){
    	sufijos.clear();
    	return true;
    }
    public int compareTo(Nodo n){
    	return this.getClave().compareToIgnoreCase(n.getClave());
    }
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...
  #2 (permalink)  
Antiguo 06/06/2010, 14:06
 
Fecha de Ingreso: mayo-2010
Mensajes: 17
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Ordejar hashSet mediante una lista

Me he dado cuenta que el hashset no se puede ordenar. Puedo elegir algun tipo que herede de Set. ¿Se podria hacer algo asi con treeSet?

Porque liknedHashSet no, que no ser el numero de elementos de antemano.

¿Como veis ordenar un treeSet? Porque los metodos de iterator, add, remove, contains y size son iguales de cabecera y retorno de elementos entre hashSet y treeSet, entonces no me costaria mucho adaptarlo

Etiquetas: lista
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:03.