Bien, continuamos con el método recursivo que recorre este árbol, entonces estático public static
void no devuelve nada por ahora.
Método recursivo
en que lo que recibe el componente que el que vamos a iterar entonces componente C y eso por ahora bien,
vamos a partir primero imprimiendo el nombre.
Entonces Shout compone el punto Vietto nombre, pero casualmente imprimir el nombre de principal del
padre que sería bueno.
Psé.
Entonces ahora tenemos que preguntar si este componente principal o padre contiene hijos.
Entonces, utilizando un IF recuerden que ya tenemos el método.
Entonces sería C punto.
Tiene hijo, entonces?
Si tiene hijos, perfecto.
Los vamos a iterar.
Entonces utilizando un for común y corriente del tipo componente hijo 2 punto C de componente padre
principal punto get hijos.
Acá obtenemos la lista de sus hijos.
Perfecto, la recorremos y de forma recursiva invocamos nuevamente el método recursivo para cada hijo.
Entonces cada hijo va a repetir este método y va a preguntar si tiene hijo.
Bueno, imprime el nombre de este componente.
Recorre los hijos y así por cada uno, así sucesivamente.
Se empieza a construir este árbol y comienza a navegar de forma recursiva.
Entonces por eso es importante invocar este método recursivo, ya que pasamos el hijo.
Entonces por cada hijos invocamos este método method recursivo, por cada hijo, por cada uno y listo.
Eso es todo.
Entonces ahora vamos a levantar.
Vamos a probar.
Sí, pero ante la Antar, qué nos faltaría?
Faltaría algo importante llamar a este methos recursivo.
Pero quien lo enfoca lo tiene que invocar el padre, que sería pecé componente principal.
Que finalmente está compuesto y construido por los demás.
Entonces por acá.
Método recursivo pasamos psé, siempre principal y a partir de este.
Se comienza a navegar en el árbol a s ejecutamos.
Se fijan bien navega gabinete psa этих que tiene la fuente poder, a su vez tiene una tarjeta madre,
la tarjeta madre compuesta por una CPU m, MD, Reisen, ventilador CPU disipador que son patra CPU
y así cada componente bien, pero le podríamos dar un Lucasfilm o alguna plantilla para que se muestren
de forma jerarquía cada elemento.
Eso lo podríamos hacer con niveles.
Entonces, como segundo argumento en el metodo recursivo vamos a colocar acá un entero nivel bueno,
siempre a partir en el nivel cero.
Acá meto recursivo pecé coma cero, en nivel cero meto recursivo.
Acá en los hijos vamos a colocar koma nivel +1.
Entonces siempre a cada hijo le sumamos uno al nivel perfecto, pero ahora tenga que imprimir acá según
el nivel alguna rayita, algún tabulador o línea.
Veamos entonces por acá un string.
Lo vamos a hacer con un tabulador, con un té.
Punto.
Repito, según la cantidad niveles.
Es decir, vamos a repetir el string tabulador dependiendo al cante nivele.
Cuando nivel es cero no imprime nada, pero cuando uno tábula una línea, cuando el nivel 2, es decir
está dentro de esta jerarquía, dentro de los hijos, imprime un tabulador y así sucesivamente.
Los hijos de los hijos son dos tabuladores y así.
Entonces, con este pequeño cambio vamos a ver cómo se muestra de forma gráfica.
Perfecto gabinete pesea takis contiene.
Fuente poder 700 tarjeta madre, luego contiene teclado y mouse, pero a su vez main board ASUS contiene
una CPU que sube la CPU compuesta por ventiladores por disipador.
Luego tenemos tarjeta de video ENVÍDIA Retegui tres mil ochenta ocho gigas compuesta por la GPU RDX
y 2 RAM de 4 Halligan ventiladores también memoria RAM y disco duro, que son parte de la tarjeta madre.
Así que está perfecto.
Incluso podremos cambiar esto por esto como lo queramos manejar.
Veamos.
Se fijan?
Como si fuera un directorio.
Bien, creo que me gusta más con tabulador.
Bien, pero estuvimos se podría hacer conlleva 8 con el API Stream.
Bueno, veamos cómo podríamos modificar esto para que sea recursivo utilizando el API Stream, pero
antes lo vamos a copiar y pegar este método para que tengamos estas dos formas y no perder una.
Entonces voy a copiar esto.
Lo pegamos por acá.
Entonces voy a renombrar acá, este queda respaldo.
Acá ya va 8 o stream, da lo mismo.
Acá vamos a utilizar ya 8.
Esto lo modificamos.
Entonces te lo vamos a quitar.
Lo primero es agregar un atributo nivel a la clase componente acá.
Entonces private int nivel bien.
Método lletra setter para nivel.
Entonces al final por acá.
Generai Guiteras Sette Nivel.
Listo.
Nada más.
Atributo nivel del tipo entero Guiteras Z volvemos acá.
Entonces asignamos el nivel a este componente set, punto, set, nivel nivel, lo que pasamos por argumento
perfecto.
Ahora comenzamos con el API Stream, pero es simple.
Este método va a devolver en vez de vey.
Va a devolver un stream stream del tipo componente.
Vamos a importar de llebaba útil el stream perfecto y acá proton y comenzamos stream junto con catá.
Vamos a concatenar.
Es decir, vamos a unir dos string el padre con sus hijos.
La idea de tener un solo flujo con todos los elemento completo padre y con los hijos uno solo.
Bien, el padre sería el primero componente C.
Pero sé del tipo de componente y acá lo tenemos que concatenar como un stream.
Por lo tanto, tenemos que convertir este c a un tipo string.
Entonces, cacería de stream punto off.
Se acuerdan?
Off de.
Bien, ahí tenemos uno.
El padre coma con sus hijos, pero los hijos es bastante simple porque sería C punto get hijos punto
stream.
Ahí tenemos el estilo de los hijos.
Pero además teme que navegar de forma recursiva porque los hijos también podrían tener hijos.
Para eso podríamos utilizar un flat map hijo y acá devolvemos en el flan map otro stream, que sería
justamente lo que devuelve el método recursivo.
Entonces cacería.
Método recursivo.
Hijo, y el nivel nivel más?
Perdón.
En vez de metodo recursivo método recursivo ya 8 9 8 s.
Marca.com.
Entonces por cada hijo invocamos el methos recursivo por cada hijo.
Y esto devuelve un string de componente cómo devuelve un stream?
Por eso utilizamos flat map.
Recuerde que Fatma lo que hace es tomar varios stream y lo une bajo una única salida, un solo stream.
Todo junto.
Entonces, por cada hijo lo navegamos de forma recursiva.
De acá pasamos su stream y lo concatenados con el padre y listo.
Ahí lo tenemos.
Entonces ahora simplemente este método recursivo ya 8 que tenemos acá.
Lo que hace es solamente el flujo.
Pero acá tenemos que tener un operador terminal, por ejemplo, un forillo para recorrerlo.
Acá se emite el componente cada uno y lo vamos a imprimir Shout.
Con el tabulador conté punto, repito, ya pasamos el nivel, pero el nivel lo tenemos trae de componente,
componente, punto.
Qué nivel?
Recuerde que el nivel sólo asignamos acá en este método recursivo a cada uno según corresponda, según
su jerarquía.
Luego acá concatenados con el nombre.
Entonces por acá.
Acá tenemos el repite por acá.
Más C punto.
Guet nombre.
Y listo.
Eso es todo.
Levantamos.
El resultado es el mismo gabinete técnico en Fuente Poder, con placa madre, CPU, ventilador disipador,
tarjeta video con la GPU, RAM y ventiladores, memoria RAM, disco duro en placa madre y luego tenemos
teclado y mouse.
Empecé bien.
Entonces, para finalizar, yo sé que esta parte puede ser un poco enredada, pero básicamente por cada
componente podría tener hijos.
Entonces lo que hacemos es concatenar el stream del propio componente con el stream de sus hijos, pero
a su vez cada hijo.
Bueno, por eso concatenados con get hijos trim.
Pero sube.
Cada hijo puede tener otros hijos.
Entonces por eso utilizamos el flat map para navegar de forma recursiva utilizando el método recursivo
ya 8.
Como devuelve un stream.
Tenemos que utilizar un plasma para aplanar este stream en una única salida.
Pasamos al componente hijo por cada uno.
El hijo en cuestión con su nivel correspondiente y así se vuelve a invocar este método recursivo para
este componente hijo.
Le asignamos el nivel de concatenados y también con sus propios hijos y a su vez sus hijos pueden tener
otros hijos.
Y así empieza a navegar de forma recursiva.
Bueno, muy parecido a lo que hicimos acá, pero es otra forma común y corriente sin utilizar stream
de acá utilizando 100 porciento string.
Esto devuelve un flujo, pero acá lo tenemos que utilizar con un operador final, por ejemplo con un
forillo para iterar y mostrar la información utilizando el nivel con el repite y el nombre.
Eso sería todo.
Espero que le haya gustado bien completo.
Y cómo se dan cuenta al final?
Recursividad no es tan complicado.
Simplemente una clase que contiene elementos de su mismo tipo y también podría ser utilizando interfaces.
Es decir, que este componente todo implementen la misma interfaz.
Nada más.
Continuamos en la siguiente clase.