我有一個工作代碼,需要一個集合並應用基於一定距離的過濾器。轉換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
語義暗示:列表中的第一點與其餘點不同:它不應該是列表的一部分。作爲單獨的參數傳入。 –