【发布时间】:2015-06-16 22:56:51
【问题描述】:
我必须在 SurfaceView 上绘制一些移动的物体的轨迹。对象的轨迹实现为点的 LinkedList(点是 SurfaceView 上的一对浮点坐标)。 LinkedList 的动机是这样的行为
public class Trail extends LinkedList<Points> {
private static int numbOfPoints;
@Override
public boolean add(Point point) {
super.add(point);
while( this.size() > Trail.numbOfPoints ) {
super.remove();
}
return true;
}
}
其中 numbOfPoints 是跟踪点的最大数量。如果添加了新点,则从路径中删除最旧的点以保持路径大小不变。但是当我绘制点时,为了使用 canvas.drawPoints(float[]),我将有一个 float[] 而不是一个 LinkedList。所以我想出了一个从 LinkedList 到 float[] 的手动转换,它效率低下并且会引起一些麻烦......
那么,有没有一种方法可以避免使用 LinkedList 并将坐标直接存储到具有上述行为的 float[] 中?
【问题讨论】:
-
你知道这个数据结构吗:en.wikipedia.org/wiki/Circular_buffer?
-
@user3707125 谢谢,非常有趣,但问题再次是转换为一个普通的浮点数组......我的问题是:有没有一种方法可以只使用浮点数组来获得所需的行为?
标签: java android arrays linked-list