我有一个工作代码,需要一个集合并应用基于一定距离的过滤器。转换Java 7代码,按距离过滤集合到流
例如,列表中的第二个点必须至少与第一个点相距1KM,并且这两个点之间的任何项目都将被删除。 输入已经排序。
private List<Point> filterByMinimumDistance(List<Point> points, double minDistance) {
Point reference = points.get(0);
List<Point> filtered = new ArrayList<>();
filtered.add(reference);
for (Point point : points) {
double distance = getDistance(reference, point);
if (distance >= minDistance) {
reference = point;
filtered.add(point);
}
}
return filtered;
}
private double getDistance(Point p1, Point p2) {
double dx = p1.getX() - p2.getX();
double dy = p1.getY() - p2.getY();
return Math.sqrt(dx * dx + dy * dy);
}
到目前为止,我还没有能够拿出一些用一个更好的流解决方案替代这个问题。任何帮助,将不胜感激。谢谢!
为什么你想要这样做?仅仅因为它“更有魅力”......? – Michael
@迈克尔不是因为这个,但它会提高我的技能。我只是试图在这里学习 – victorantunes
语义暗示:列表中的第一点与其余点不同:它不应该是列表的一部分。作为单独的参数传入。 –