public boolean removeEdge(E e) {
    Vertex a = e.getVertexA();
    Vertex b = e.getVertexB();

    // Achtung: Modifikationen sind notwendig, wenn bei ungerichteten
    // Graphen eine Kante {a, b} nur einmal existiert und sowohl in
    // der Nachbarliste von a als auch in der von b abgelegt wurde
    int aId = a.getId();
    Integer aIdx = vertexIndex.get(aId);
    if (aIdx == null) {
      return false; // Knoten konnte nicht gefunden werden
    }

    // f�r alle Kanten der Nachbarliste von a
    ListIterator<E> it = adjList.get(aIdx).listIterator();
    while (it.hasNext()) {
      Edge le = it.next();
      if (le.getVertexB().getId() == b.getId()) {
        // gesuchte Kante gefunden
        it.remove();
        return true;
      }
    }
    return false;
  }