I have a simple static class that it's purpose is given an RDD of Point
to find the median of each dimension and return that as a new Point
using Spark's reduce functions.
This is the class:
public class MedianPointFinder {
public static Point findMedianPoint(JavaRDD<Point> points) {
Point biggestPointByXDimension = points.reduce((a, b) -> getBiggestPointByXDimension(a, b));
Point biggestPointByYDimension = points.reduce((a, b) -> getBiggestPointByYDimension(a, b));
double xDimensionMedian = biggestPointByXDimension.getX() / 2.0;
double yDimensionMedian = biggestPointByYDimension.getY() / 2.0;
return new Point(xDimensionMedian, yDimensionMedian);
}
private static Point getBiggestPointByXDimension(Point first, Point second) {
return first.getX() > second.getX() ? first : second;
}
private static Point getBiggestPointByYDimension(Point first, Point second) {
return first.getY() > second.getY() ? first : second;
}
}
Point
class is a simple class for storing an (x, y) point.
1 Answer 1
I guess your Point
is not a java.awt.Point since that holds x
and y
as int
and you're using double
.
Why not getting rid of your Point
class by making the "Finder" class itself a MedianPoint
?
import java.awt.geom.Point2D;
public class MedianPoint extends Point2D.Double {
public MedianPoint(JavaRDD<Point> points) {
super(
/* your x calculation */,
/* your y calculation */
);
}
private static Point2D.Double greaterByXOf(Point2D.Double p1, Point2D.Double p2) {
// ...
}
private static Point2D.Double greaterByYOf(Point2D.Double p1, Point2D.Double p2) {
// ...
}
} // MedianPoint
-
\$\begingroup\$ I do need my
Point
class for some methods that I have created in it that does not exist in Point2D but I guess what I could do is wrapPoint2D
with myPoint
class and then doMedianPoint extends Point
. \$\endgroup\$Aki K– Aki K2014年11月26日 09:15:08 +00:00Commented Nov 26, 2014 at 9:15 -
\$\begingroup\$ Are there other reasons why you have to stick to
Point
? Which make movingPoint
's methods intoMedianPoint
impossible? \$\endgroup\$Gerold Broser– Gerold Broser2014年11月26日 10:47:46 +00:00Commented Nov 26, 2014 at 10:47 -
\$\begingroup\$ No, not really. I just have it for providing a limited API and adding some functionality. I have posted my revised
Point
class here codereview.stackexchange.com/questions/70902/… \$\endgroup\$Aki K– Aki K2014年11月26日 11:21:25 +00:00Commented Nov 26, 2014 at 11:21
Explore related questions
See similar questions with these tags.
1 2 9
I consider the median to be2
not4.5
. \$\endgroup\$