如何从Map <point2d,float> </point2d,float>获取数据

时间:2014-11-03 18:25:44

标签: java map

我是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中。

1 个答案:

答案 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.
    }
}