// used by tests protected void forceTreeSplit(int depth) { if (depth <= treeRoot.maxNodeDepth && this.depth < depth) { split(); for (AbstractQuadTreeNode<E> child : children) { child.forceTreeSplit(depth); } } }
/** * Ajoute tous les éléments à cette node. Split si besoin. * * @param elementsToAdd Les éléments à ajouter * @return */ public boolean addAll(Collection<? extends E> elementsToAdd) { this.elements.addAll(elementsToAdd); if (this.depth < treeRoot.maxNodeDepth && this.elements.size() > treeRoot.maxElementsPerNode) { split(); } return true; }
/** * Ajoute un élément dans cet arbre. <b>Attention</b> méthode lourde. Préférer <code>addAll() * </code> pour ajouter une grande quantité de données. * * @param e L'élément à ajouter * @return true */ public boolean add(E e) { if (e == null) { throw new NullPointerException("Elements can't be null."); } else if (isInbounds(e)) { if (children == null || !canBePushedDown(e)) { if (this.depth < treeRoot.maxNodeDepth && this.elements.size() + 1 > treeRoot.maxElementsPerNode) { this.elements.add(e); split(); } else { this.elements.add(e); } } else { children.get(getElementZone(e)).add(e); } } else { throw new IllegalArgumentException("Out of bounds"); } return true; }