To make a distance function suitable for querying a single index tree via STRtree.nearestNeighbour(ItemDistance) , the function should have a non-zero reflexive distance. That is, if the two arguments are the same object, the distance returned should be non-zero. If it is required that only pairs of distinct items be returned, the distance function must be anti-reflexive, and must return Double.MAX_VALUE for identical arguments.