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

Código Java para poder realizar un diagrama de jerarquías ( usando Colecciones )

Estas en el tema de Código Java para poder realizar un diagrama de jerarquías ( usando Colecciones ) en el foro de Java en Foros del Web. Hola gente, les comento mi situación: Tengo que modificar un código de forma de que realize un árbol de jerarquías .. es decir, tipo los ...
  #1 (permalink)  
Antiguo 27/03/2011, 20:28
 
Fecha de Ingreso: marzo-2011
Mensajes: 1
Antigüedad: 13 años
Puntos: 0
Código Java para poder realizar un diagrama de jerarquías ( usando Colecciones )

Hola gente, les comento mi situación:
Tengo que modificar un código de forma de que realize un árbol de jerarquías .. es decir, tipo los arboles genealógicos, que a partir de un padre se agregan hijos, y a los hijos se le agregan mas hijos y así sucesivamente . Finalmente tengo que imprimir por pantalla el árbol genealógico completo. El problema es que por mas que modifique y modifique las clases, siempre obtengo el siguiente mensaje en consola:


Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to trabajopractico.Nodo
at trabajopractico.ArbolNario.getRoot(ArbolNario.java :39)
at trabajopractico.Organigrama.main(Organigrama.java: 23)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)


Aca les dejo los codigos de cada una de las clases que forman parte del trabajo:



package trabajopractico

import java.util.ArrayList
import java.util.List



@author Peggy
/
public class ArbolNario {

private String s
private List x = new ArrayList()

//completar los elementos private que correspondan

Documentar los métodos.
/
public void setRoot(Nodo root) {
//completar

root.setContent(s)
}

public ArbolNario(Object o) {

x.add(o)


}

public Nodo getRoot() {


return (Nodo) x.get(0)

//completar
}

public Nodo add(Nodo n, Object o) {
//completar

n.setContent(o)
return (Nodo) n.getContent()
}

public List getNodes() {

List cola = new ArrayList()
cola.addAll(x)

return cola
}
}


-


package trabajopractico

import java.util.ArrayList
import java.util.List



@author Peggy
/
public class Nodo {

private List x = new ArrayList()

//completar los elementos private que correspondan


Por qué el constructor es protected?
/
protected Nodo(Object content) {
x.add(content)

}


Por qué este método es protected?
/
protected List getHijos() {
return (List) getContent()
}

public Object getContent() {

Object j = null
for( int i=0 i<= x.size() i++){

j = x.get(0)


}
return j
}

public void setContent(Object content) {

x.add(content)
}
}


-

package trabajopractico

import java.util.ArrayList
import java.util.List
import trabajopractico.Nodo
import trabajopractico.ArbolNario



@author Peggy
/
public class Organigrama {

public static void main(String[] args) {


ArbolNario a = new ArbolNario("CEO") // Presidente es la raíz del árbol

Nodo cfo = a.add((Nodo) a.getRoot(), "CFO")

a.add(cfo, "Gerente de Finanzas")

Nodo gerenteIT = a.add(cfo, "Gerente de IT")

a.add(gerenteIT, "Jefe de Tecnología")
a.add(gerenteIT, "Jefe de Aplicaciones")

Nodo jefeERP = a.add(gerenteIT, "Jefe de ERP")

a.add(jefeERP, "Consultor Sr. 1")
a.add(jefeERP, "Consultor Sr. 2")
a.add(jefeERP, "Consultor Sr. 3")
a.add(jefeERP, "Consultor Jr. 1")

List nodos = new ArrayList()
System.out.println(nodos = a.getNodes())



}
}



Por favor si alguien puede darme una mano con este código se lo agradeceré mucho ya que no tengo buen manejo de las Colecciones.

Muchas Gracias!
  #2 (permalink)  
Antiguo 28/03/2011, 00:23
 
Fecha de Ingreso: marzo-2011
Mensajes: 25
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: Código Java para poder realizar un diagrama de jerarquías ( usando Colecci

Buenas,

Para imprimir una ArrayList, tienes que recorrerla a mano para poder luego imprimirla.

El error que te da es que no puede convertir a STRING (caracteres) para poderlo imprimir por pantalla, porque tu quieres imprimir una lista directamente.

Aqui tienes un ejemplo de recorrer una matriz con un for:

http://www.javadabbadoo.org/houstons/foreachMatrices.html

Cuando estes recorreindola, tienes que sacar por pantalla cada uno de los elementos de la arraylist.

Si tienes alguna duda ya sabes!

un saludo
  #3 (permalink)  
Antiguo 28/03/2011, 12:48
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Código Java para poder realizar un diagrama de jerarquías ( usando Colecci

Cita:
Iniciado por oriolsoler
Buenas,

Para imprimir una ArrayList, tienes que recorrerla a mano para poder luego imprimirla.

El error que te da es que no puede convertir a STRING (caracteres) para poderlo imprimir por pantalla, porque tu quieres imprimir una lista directamente.
Eso no es cierto, un List sí puede imprimir directamente su contenido

Código Javascript:
Ver original
  1. List <List <String>> a  = new ArrayList <List <String>>();
  2.         List <String> a1 = new ArrayList<String>();
  3.         List <String> a2 = new ArrayList<String>();
  4.         a1.add("uno");
  5.         a1.add("dos");
  6.         a.add(a1);
  7.         a2.add("tres");
  8.         a2.add("cuatro");
  9.         a.add(a2);
  10.         System.out.println(a);

Otra cosa es que el elemento final (en este caso un String) sea una clase propia sin sobreescribir el método toString, en ese caso mostrará un código identificativo del objeto, pero no falla.

El problema solitary_2_7 es justo el contrario al que tú dices

Cita:
java.lang.String cannot be cast to trabajopractico.Nodo
at trabajopractico.ArbolNario.getRoot(ArbolNario.java :39)
Está tratando de convertir/pasar como parámetro un String en un objeto Nodo, línea 39 de ArbolNario

No me he leído el código, pero puede ser que esté llamando recursivamente nodos sin tener en cuenta que en el último nodo, no tiene que llamar al siguiente.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: diagrama, poder, realizar
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 21:25.