Java 关于Arraylist的几个问题
对不起,我只是个初学者。 我使用ArrayList保存手机传感器的结果Java 关于Arraylist的几个问题,java,android,arrays,arraylist,Java,Android,Arrays,Arraylist,对不起,我只是个初学者。 我使用ArrayList保存手机传感器的结果 ArrayList b=新的ArrayList()//保存 我创建了20个项目 private void ini() { // TODO Auto-generated method stub for (int i = 0; i <= 20; i++) { b.add(i, (float) 0); } } 结果永远不会更改为什么不在0处插入值呢 按照 在此列表中的指定位置插入指定
ArrayList b=新的ArrayList()//保存
我创建了20个项目
private void ini() {
// TODO Auto-generated method stub
for (int i = 0; i <= 20; i++) {
b.add(i, (float) 0);
}
}
结果永远不会更改为什么不在0处插入值呢 按照 在此列表中的指定位置插入指定元素将当前位于该位置的元素(如果有)和任何后续元素向右移动(将一个元素添加到其索引中) 例如 使用此解决方案,如果将20作为参数传入,则可以实时缩短和增加数据长度,而不会丢失数据 还可以反转您的数据 使用 注意这一点
for (int i = 1; i <= 19; i++) {// result left
b.add((i - 1), b.get(i));
Log.e("set", "" + i + " " + b.get(i));
}
如果需要类似于循环缓冲区的实现,为什么不在列表末尾添加新值并删除第一个值(索引为0)?你可以:
private void addNewValue(List<Float> data, float value) {
final int MAX_DATA_SIZE = 20;
data.add(Float.valueOf(value));
if(data.size() > MAX_DATA_SIZE) {
data.remove(0);
}
}
private void addNewValue(列表数据、浮点值){
最终整数最大数据大小=20;
添加数据(Float.valueOf(value));
if(data.size()>最大数据大小){
数据删除(0);
}
}
还可以使用链表,因为它在这种情况下工作得更快:
List<Float> data = new LinkedList<Float>();
List data=newlinkedlist();
用于删除第一个元素,然后删除arraylist末尾的新元素
public void onSensorChanged(SensorEvent arg0) {
// TODO Auto-generated method stub
textx.setText("X:" + String.valueOf(arg0.values[0])); // X
texty.setText("Y:" + String.valueOf(arg0.values[1])); // Y
textz.setText("Z:" + String.valueOf(arg0.values[2])); // Z
try {
b.remove(0);
b.add(19, (float) arg0.values[1]);
Log.e("set", "" + b.get(19));
} catch (Exception obj) {
Log.e("err", "err");
}
}
“我创建了20个数组。”您只有一个arrayList,其中包含20个项目。@AmulyaKhare 21 ItemsOrry。应该是20件。谢谢。但是画画布对我来说不方便。我想画折线图。是的,我想在ArrayList中反向迭代是很困难的。提示集合。反向(数据);我已经为youThanks更新了答案。但是画画布对我来说并不方便
for (int i = 1; i <= 19; i++) {// result left
b.add((i - 1), b.get(i));
Log.e("set", "" + i + " " + b.get(i));
}
Log.e("set", "" + i-1 + " " + b.get(i-1));
private void addNewValue(List<Float> data, float value) {
final int MAX_DATA_SIZE = 20;
data.add(Float.valueOf(value));
if(data.size() > MAX_DATA_SIZE) {
data.remove(0);
}
}
List<Float> data = new LinkedList<Float>();
public void onSensorChanged(SensorEvent arg0) {
// TODO Auto-generated method stub
textx.setText("X:" + String.valueOf(arg0.values[0])); // X
texty.setText("Y:" + String.valueOf(arg0.values[1])); // Y
textz.setText("Z:" + String.valueOf(arg0.values[2])); // Z
try {
b.remove(0);
b.add(19, (float) arg0.values[1]);
Log.e("set", "" + b.get(19));
} catch (Exception obj) {
Log.e("err", "err");
}
}