我是java的初学者。这是我的问题:
如何汇总Map<Point2D, Float>
相对于Float值(z轴)的所有点?
以下是我创建地图的方法:
Map<Point2D, Float> coordinates = new HashMap<Point2D, Float>();
我想获得Float z-coord上的所有Point2D(x,y)。 (z轴)
例如
<(x=1,y=2),z=3>
<(x=2,y=2),z=3>
<(x=5,y=6),z=3>
<(x=5,y=2),z=4>
我希望得到z = 3的所有点,所以它应该是1,2,3rd并保存在ArrayList
中。
答案 0 :(得分:0)
如果您无法更改数据结构,那么您只需要遍历map
并获取所需的所有entrySet
;
for (Map.Entry<Point2D, Float> coordinateFloat: coordinates.entrySet()) {
Point2D point = coordinateFloat.getKey();
Float z = coordinateFloat.getValue();
// ... Now you can test for z, and add the points to some other list.
}
由于您在每个xy平面z=Z
上的所有2D点上操作,因此您可以以这种方式存储数据;
Map<Float, ArrayList<Point2D> > coordinates = new HashMap<Float, ArrayList<Point2D> >();
这样,您可以相当容易地遍历所有xy平面,并在点集合上执行凸包算法;
for(Map.entry<Float, ArrayList<Point2D>> coordinatesOnPlane : coordinates.entrySet()){
Float z = coordinatesOnPlane.getKey();
for(Point2D point : coordinatesOnPlane.getValue()){
//... act on points, or whatever.
}
}