[
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)