我有一個名爲Keypoints的類,我想創建一個存儲各種關鍵點對象的數組列表。 我這是怎麼decalred並初始化關鍵點列表:訪問arraylist的隨機元素產生相同的結果
private static List<Keypoint> m_keyPoints = new ArrayList<Keypoint>();
在我的代碼
所以,我有一個循環,其增加的關鍵點對象到列表:
for(xi=0;xi<width;xi++)
{
for(yi=0;yi<height;yi++)
{
/*Calculation for scale,mag,orien*/
// Save this keypoint into the list
Keypoint kp =new Keypoint(xi*scale/2, yi*scale/2, mag, orien, i*m_numIntervals+j-1);
m_keyPoints.add(kp);
}
}
但現在每當我試圖從列表中訪問一個隨機元素,我總是得到相同的結果。
for(int ikp = 0;ikp<m_numKeypoints;ikp++)
{
Keypoint key =m_keyPoints.get(ikp);
int scale = key.s();
float kpxi = key.xi();
float kpyi = key.yi();
}
我我得到了規模化,KPXI和kpyi相同的值在即使我非常肯定,每一個值是不同的列表中的每個元素。相反,它會返回列表中的最後一個對象。 所以我的問題是,當我把它添加到列表中的對象時是錯誤的,還是它與我的關鍵點類的問題?還是完全是另一回事?
下面是關鍵點
import java.util.List;
public class Keypoint {
public float xi;
public float yi;
public List<Double> orien ;
public List<Double> mag;
public int scale;
public Keypoint(){}
public Keypoint(float x, float y, List<Double> magnitude, List<Double> orientation, int s)
{
xi = x;
yi = y;
mag = magnitude;
orien = orientation;
scale = s;
}
public static float xi()
{
return xi;
}
public static float yi()
{
return yi;
}
public static int s()
{
return scale;
}
public static List<Double> mag()
{
return mag;
}
public static List<Double> orien()
{
return mag;
}
}
向我們展示添加循環 – BobTheBuilder 2013-03-03 07:46:05
@baraky它只是一個for循環,它通過xi和yi循環來執行關鍵點構造函數的各種參數的perfrom計算。 – user1926691 2013-03-03 07:50:21
如何爲非靜態字段獲取靜態getter? – 2013-03-03 07:53:41