private boolean llenarMatrizNoDiagonal() { /*recorre la lista, si no es barra, carga en un lista los componentes (padres ó hijos) que son barras * es decir, las barras que estan relacionadas directo al componente actual * luego toma la lista de barras y por cada barra busca las posiciones de las otras barras y agrega el valor * en la matriz, por medio de un bucle dentro de otro bucle */ Iterator<Componente> componenteIt = listComponentes.iterator(); List<Componente> hijos = new ArrayList<Componente>(); List<Componente> conexionBarras = new ArrayList<Componente>(); double admitancia; while (componenteIt.hasNext()) { conexionBarras.clear(); Componente miComponente = componenteIt.next(); // busca conexiones de directa barra - linea - barra // es decir, si es linea busca padre barra, ó hijos barra if ("domain.Barra" != (miComponente.getClass().getName())) { admitancia = miComponente.getAdmitancia(); // padre es barra? if (miComponente.getPadre() != null) { if ("domain.Barra" == (miComponente.getPadre().getClass().getName())) { conexionBarras.add(miComponente.getPadre()); } } // trae los hijos y filtra solo las barras hijos = miComponente.getHijos(); if (hijos != null) { for (Componente miHijo : hijos) { if ("domain.Barra" == (miHijo.getClass().getName())) { conexionBarras.add(miHijo); } } } // recorre la lista y dentro del bucle recorre de nuevo para las // conexiones if (conexionBarras != null) { for (Componente conHijoPri : conexionBarras) { int barraPriPos = barraPos.get(conHijoPri); for (Componente conHijoSec : conexionBarras) { if (!conHijoPri.equals(conHijoSec)) { int barraSecPos = barraPos.get(conHijoSec); System.out.println("completa hijo: " + barraPriPos + "-" + barraSecPos); matrizAdmitancia[barraPriPos][barraSecPos] = admitancia; } } } } } } return true; }