2017-10-05 58 views
0

我正在学习Java,无法找出我的问题。当!= 2时从列表中删除

我有一个大小不一的列表。我想要做的是,是从列表中删除,直到大小= 2

我拥有的是:

int content = list.size() - 1; 

while(list.size() !=2){ 
list.remove(content); 
} 

但我得到异常:IndexOutOfBoundsException异常。指数9,大小9

(此索引,大小将根据内容有时会改变)

我怎么能保持在列表进行迭代,直到只有2个元素任何建议都走了?

感谢

+4

您需要减少'content',否则其值不会改变。 – jsheeran

回答

4

真的需要

while (list.size() > 2){ 
    list.remove(content--); 
} 
  1. > 2意味着该算法是稳定的,如果大小最初是小于2

  2. 你需要减少content当您删除一个元素。

1

你永远不递减的内容,所以它永远不会成为2.

int content = list.size() - 1; 

while(list.size() !=2){ 
    list.remove(content); 
    content = content -1; 
} 
1

你可以使用下面的实现。

while(list.size() !=2){ 
    list.remove(list.size() - 1); 
} 

但是,如果列表包含一个或零个元素,则这不起作用;这些案例可以覆盖如下。

while(list.size() > 2){ 
    list.remove(list.size() - 1); 
}