2014-11-03 29 views
0

我是java的初學者。這裏是我的問題: 如何彙總Map<Point2D, Float>相對浮點值(z軸)的所有點?我該如何從Map <Point2D,Float>獲取數據>

這裏是我創建的地圖:

Map<Point2D, Float> coordinates = new HashMap<Point2D, Float>(); 

我想所有的Point2D(X,Y),這是在浮動的z座標。 (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

您需要更具體地瞭解您想要完成的任務。 – ajb 2014-11-03 18:33:03

+0

@ajb我想要得到所有在z軸上的點(浮點值) – 2014-11-03 18:37:00

+0

這實際上沒有更具體的。請提供一個例子,說明如何設置你的'Map',並舉例說明你想創建什麼。你想創建一個數組,一個'List'或其他一些數據結構,你想要什麼值? – ajb 2014-11-03 18:40:53

回答

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

既然你對所有的2D點上的每個xy平面z=Z操作,你可以存儲在這樣的數據;

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. 
    } 
} 
相關問題