コレクションをとり、特定の距離に基づいてフィルタを適用する作業コードがあります。コレクションをストリームからストリームにフィルタリングするTransform Java 7コード
たとえば、リストの2番目のポイントは、最初のポイントから少なくとも1KM離れていなければなりません。また、その2つのポイントの間のアイテムはすべて削除されます。 入力はすでにソートされています。
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
@Michaelそれのためにではなく、それは私のスキルを向上させるでしょう。私はちょうどここで学ぶことを試みている – victorantunes
セマンティックな提案:リストの最初のポイントは残りのものと異なります:それはリストの一部ではありません。それを別のパラメータとして渡します。 –