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;
  }
  private void llenarMatrizAdmitancia() {
    // traer lista en el constructor
    // crea un hashMap con solo las barras
    int cont = -1;
    barras.clear();
    barraPos.clear();
    for (Componente i : listComponentes) {
      // si es barra lo agrega en lista barras
      if ("domain.Barra" == i.getClass().getName()) {
        // OJO VER N0TA barra-BarraPos:
        barras.add(i);
        // guarda las dupla "barra - posicion en arreglo" en un HashMap
        cont += 1;
        barraPos.put(i, cont);
      }
    }
    // define tamaño de matriz
    crearMatriz(barras.size());

    // llenar matriz diagonal principal
    llenarMatrizDiagonal();

    // llenar matriz todo menos diagonal principal
    llenarMatrizNoDiagonal();

    // FALTA
    // Cargar matriz en JAMA

    // imprime matriz
    for (int filM = 0; filM < matrizAdmitancia.length; filM++) {
      for (int colM = 0; colM < matrizAdmitancia.length; colM++) {
        System.out.print("\t" + matrizAdmitancia[filM][colM] + "  ");
      }
      System.out.println();
    }
  }