
com.jamieswhiteshirt.rtree3i.MinimalOverlapVolumeSelector Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rtree-3i-lite Show documentation
Show all versions of rtree-3i-lite Show documentation
Immutable map applying a spatial index to keys based on R-Trees
The newest version!
package com.jamieswhiteshirt.rtree3i;
import static com.jamieswhiteshirt.rtree3i.Comparators.overlapVolumeComparator;
import static com.jamieswhiteshirt.rtree3i.Comparators.volumeComparator;
import static com.jamieswhiteshirt.rtree3i.Comparators.volumeIncreaseComparator;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* A selector that selects the minimum node by {@link Comparators#overlapVolumeComparator},
* {@link Comparators#volumeComparator(Box)} then {@link Comparators#volumeIncreaseComparator(Box)}.
*/
public final class MinimalOverlapVolumeSelector implements Selector {
@Override
public Node select(Box box, List> nodes) {
List boxes = nodes.stream().map(Node::getBox).collect(Collectors.toList());
Comparator boxComparator = overlapVolumeComparator(box, boxes).thenComparing(volumeIncreaseComparator(box))
.thenComparing(volumeComparator(box));
return Collections.min(nodes, Comparator.comparing(Node::getBox, boxComparator));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy