[ https://issues.apache.org/jira/browse/GEOMETRY-146?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17520505#comment-17520505 ]
Matt Juntunen commented on GEOMETRY-146: ---------------------------------------- bq. Hmm, I thought that it was inefficient (requiring iterating in order to copy all references to entries into the returned collection) Full enumeration is only required if the size is not known ahead of time, as in the case of returning a collection representing entries within a specified radius. The return values from {{nearToFar}} and {{farToNear}} represent the entire map/set so we already know the size. The collections are lazily populated views of the map/set data and only store enough information to determine the next element to return during iteration. (This is why {{List}} would still be inefficient here, since it would require much more storage to support access by index. Hence, it is left to the caller to convert to a {{List}} if needed.) bq. Otherwise, it is great; and, thus, why not have Great! I'll start converting to this API. > PointSet/Map closest points > --------------------------- > > Key: GEOMETRY-146 > URL: https://issues.apache.org/jira/browse/GEOMETRY-146 > Project: Commons Geometry > Issue Type: New Feature > Reporter: Matt Juntunen > Priority: Major > Fix For: 1.1 > > > Add methods to the new {{PointSet}} and {{PointMap}} interfaces to allow > querying of points in order of distance from a query point. > {code:java} > PointSet<P> { > // find the closest point to pt or null if empty > P closest(P pt); > // iterate through points in order, with points closest to pt coming first > Iterable<P> closestFirst(P pt); > // find the farthest point from pt or null if emtpy > P farthest(P pt); > // iterate through point in order, with points farthest from pt coming > first > Iterable<P> farthestFirst(P pt); > } > {code} > {{PointMap}} should have similar methods providing access to the map keys and > entries. -- This message was sent by Atlassian Jira (v8.20.1#820001)