搜尋此網誌

2014年11月20日 星期四

【Java】Arraylist移除問題

ref:http://www.javaworld.com.tw/jute/post/view?bid=29&id=232314

想請問一下大家
我想要用arraylist裡的remove去移除內容
卻發現用一般的想法好像不行

1
2
3
4
5
6
7
8
9
10
11
12
13
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(2);
list.add(2);
list.add(3);
list.add(1);
list.add(2);
System.out.println(list);
    
for (int i=0;i<list.size();i++){
  if(list.get(i)<3);
  list.remove(i);
}
System.out.println(list);


實際上這個list應該還保有3, 但是好像不能用list.size去判斷Arraylist的大小
(因為一刪除size就會改變?, 位置好像也跟著改???)

還是要怎麼處理呢?? 


解決辦法:使用Iterator
1
2
3
4
5
for( java.util.Iterator<Integer> allElements=list.listIterator(); allElements.hasNext(); ){
  Integer currentElement = allElements.next();
  if( currentElement < 3 )
    allElements.remove();
}

沒有留言: