Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android arraylist重置索引_Java_Android - Fatal编程技术网

Java Android arraylist重置索引

Java Android arraylist重置索引,java,android,Java,Android,我正在尝试使用加速度计的z轴创建一个限制为四个元素的阵列列表 记录第四个元素时,它会将数组的索引重置为零并继续数组 示例:数组=1,2,3,4 然后会出现一个新值,即5 然后数组=5,1,2,3 ArrayList<Float> z = new ArrayList<>(); @Override public void onSensorChanged(SensorEvent Event) { z.add(Event.values[2]); if (z.s

我正在尝试使用加速度计的z轴创建一个限制为四个元素的
阵列列表

记录第四个元素时,它会将数组的索引重置为零并继续数组

示例:数组=1,2,3,4

然后会出现一个新值,即5

然后数组=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] );
    }
}
ArrayList z=new ArrayList();
@凌驾
传感器更改时的公共无效(传感器事件){
z、 添加(事件值[2]);
如果(z.size()>3){
z、 移除(3);
z、 添加(0,事件值[2]);
}
}

如果只需要4个值,只需使用数组即可

还要保留添加到的索引,并使用模来重置它

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);
    }
}
@覆盖
传感器更改时的公共无效(传感器事件){
浮动值=事件值[2];

如果(z.size()我已经根据您的要求编写了一个方法来实现输入

public static void addToList(String s){
     if(list.size()>=5){
         list.add(0,s);
         for (int i = list.size() - 1; i > 4; i--) {
            list.remove(i);
         }  }
    else if(list.size()<=4){
       list.add(s);
     }
  }
publicstaticvoidaddtolist(字符串s){
如果(list.size()>=5){
列表。添加(0,s);
对于(int i=list.size()-1;i>4;i--){
列表。删除(i);
}  }

else if(list.size()也许你应该使用固定大小的数组,如果在代码中找到它让你头疼的话,你应该先把逻辑写在纸上。这闻起来像是家庭作业……谢谢你的帮助,但它不起作用,我需要它,所以当事件发生时,数据会存储在索引0中,其余的数据会右移。谢谢你的帮助帮助,我对你的答案投了赞成票,虽然我不确定它是否注册,因为我最近加入了。你不能用少于10个代表的投票。如果答案解决了你的问题,你可以使用复选标记,否则,你可以评论说这仍然不是你想要的。