Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.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 删除Arraylist中的所有项以保留一个_Java_Android_Arraylist - Fatal编程技术网

Java 删除Arraylist中的所有项以保留一个

Java 删除Arraylist中的所有项以保留一个,java,android,arraylist,Java,Android,Arraylist,在发布这篇文章之前,我做了一些研究,但我还没有完全掌握它。基本上,我的Arraylist中有4项: 香蕉、桔子、苹果和菠萝 ArrayList<String> fruitList = new ArrayList<>(); addItems(){ fruitList.add("Banana"); fruitList.add("Oranges"); fruitList.add("Apples"); fruitList.add("Pineap

在发布这篇文章之前,我做了一些研究,但我还没有完全掌握它。基本上,我的Arraylist中有4项:

香蕉、桔子、苹果和菠萝

ArrayList<String> fruitList = new ArrayList<>();
  addItems(){
    fruitList.add("Banana");
    fruitList.add("Oranges");
    fruitList.add("Apples");
    fruitList.add("Pineapples");
}
ArrayList水果列表=新的ArrayList();
附加项(){
水果列表。添加(“香蕉”);
水果列表。添加(“橙子”);
水果列表。添加(“苹果”);
水果列表。添加(“菠萝”);
}
我只想和一个人呆在一起。这就是我迄今为止所尝试的:

for (int i = 0; i <= fruitList.size() - 1; i++) {
        fruitList.remove(i);
    }

for(int i=0;i删除除第一项以外的所有项目:

for (int i = fruitList.size() - 1; i > 0 ; i--) {
    fruitList.remove(i);
}
向后迭代,使索引与不断变化的列表大小同步。
如果您这样做:

int size = fruitList.size();
for (int i = 0; i < size - 1; i++) {
    fruitList.remove(0);
}
int size=fruitList.size();
对于(int i=0;i

您将删除除最后一项之外的所有项,因为在每次迭代中,您都会删除第一项,直到只有一项不会被删除。

这里的问题是索引从列表的开头开始上升,而列表的大小却在缩小:


size()处开始
i
-1
然后迭代到1。由于您正在删除元素,第二个元素将变为第一个元素,然后您将递增
i
并跳过一个元素。此外,由于您使用
时循环会迭代整个列表,因此您可能需要学习使用调试器。请自便。如果您仍然存在问题,请之后,请将您的问题更具体地说明您需要什么帮助。应该保留哪一个?
for (int i = 0; i <= fruitList.size() - 1; i++) {
    fruitList.remove(i);
}
fruitList.subList(1, fruitList.size()).clear();
System.out.println(fruitList);
// prints [Banana]