我正在尝试使用加速度计的z轴创建ArrayList
,限制为四个元素。
当记录第四个元素时,它会将数组的索引重置为零并继续数组。
示例:Array = 1,2,3,4
然后出现一个新值,即5
然后Array = 5,1,2,3
ArrayList<Float> z = new ArrayList<>();
@Override
public void onSensorChanged(SensorEvent Event) {
z.add(Event.values[2]);
if (z.size() > 3) {
z.remove(3);
z.add( 0, Event.values[2] );
}
}
答案 0 :(得分:0)
如果您只想要4个值,只需使用数组。
同时保留添加的索引并使用modulo重置它
float[] events = new float[4];
int eventIndex;
@Override
public void onSensorChanged(SensorEvent Event) {
events[ (++eventIndex) % events.length ] = Event.values[2];
}
或者如果你想创建一个推送结束的“堆栈”(或实际上是一个队列),那么你可能应该根据大小限制添加数据的位置,而不是在你做的时候添加两次元素达到那个大小。
@Override
public void onSensorChanged(SensorEvent Event) {
float value = Event.values[2];
if (z.size() <= 3) {
z.add(value);
} else {
z.add(0, value);
z.remove(z.size() - 1);
}
}
答案 1 :(得分:0)