Android arraylist重置索引

时间:2016-12-21 14:02:29

标签: java android

我正在尝试使用加速度计的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] );
    }
}

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)

我已根据您的要求编写了一种实现输入的方法。

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);
     }
  }

enter image description here