我想知道是否有可能從最後一個迭代到ArrayList中的第一個元素,如果是這樣的話?究其原因是因爲我需要刪除添加到列表中的最後一個元素如何迭代從最後到第一個ArrayList?
回答
雖然你可以使用索引,這樣
List<String> myList = new ArrayList<String>();
... add code to populate the list with some data...
for (int i = myList.size() - 1 ; i >= 0 ; i--) {
if (myList.get(i).equals("delete me")) {
myList.remove(i);
}
}
總是重複你ArrayList
你會過得更好使用刪除項目的目的ListIterator<T>
從ArrayList
:
ListIterator<String> listIter = myList.listIterator();
while (listIter.hasNext()) {
if (listIter.next().equals("delete me")) {
listIter.remove();
}
}
名單迭代器也可用於向後迭代列表 - 如下所示:
ListIterator<String> listIter = myList.listIterator(myList.size());
while (listIter.hasPrevious()) {
String prev = listIter.previous();
// Do something with prev here
}
迭代器的初始索引應該等於最後一個元素+1的索引。如docs所示:「對previous
的初始調用將返回指定索引減1的元素。
但是這個選項不是從頭到尾嗎?我需要以儘可能最好的方式將元素從最後移到第一個,不太容易出錯 –
@RicardoSanchez評論發佈時間:10分鐘之前對此問題進行了修改,刪除了最後一個元素。如果這還不夠,也許你需要提高你的要求 – Cruncher
最後一段代碼在listIterator()方法中沒有「-1」的情況下工作:「myList.listIterator(myList.size());」 隨着「-1」的意思是忽略最新的項目,從倒數第二個開始。 – mizerablebr
如果您只是需要刪除一個數組列表的最後一個元素,你可能只是做:
arrayList.remove(arrayList.size()-1);
如果你想刪除從後到前的所有元素,你可以用這個循環:在數組列表
for(int i = arraList.size()-1; i >= 0; i--)
{
arrayList.remove(i);
}
要了解詳情,您可以去這裏:http://www.tutorialspoint.com/java/java_arraylist_class.htm
合這有助於。
下面是做這件事(你之所以是一個單獨的問題):
import java.util.*;
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
ListIterator<String> iter = list.listIterator(list.size());
while (iter.hasPrevious()) {
String s = iter.previous();
System.out.println(s);
}
ArrayList aList = new ArrayList();
aList.add(1);
aList.add(2);
aList.add(3);
Collections.reverse(aList);
Iterator iter = aList.iterator();
while(iter.hasNext()){
iter.next();
iter.remove();//remove an element
break;//break from the loop or something else
}
這不會從頭到尾迭代。它顛倒了集合,然後從頭開始迭代。它不僅具有破壞性,而且非常低效。 –
List<String> names = ....
int count= names.getSize();
Iterator<String> i = names.iterator();
while (i.hasNext()) {
String s = i.next(); // must be called before you can call i.remove()
// Do something
if (count==1)
i.remove();
count--;
}
- 1. 從第一個到最後一個元素迭代json
- 2. 如何從一個ArrayList迭代
- 3. 如何迭代一個ArrayList的HashMap
- 4. 迭代範圍與第一給出最後的迭代器
- 5. JessRules - 迭代在一個ArrayList
- 6. 如何確定記錄是迭代中的第一個/最後一個?
- 7. 如何從一個迭代
- 8. 通過一個ArrayList一個HashMap迭代
- 9. 如何添加到迭代時是一個HashMap值的ArrayList?
- 10. 迭代解決方案python(找到最後一個和最後一個迭代值)
- 11. 如何迭代hasmap中的ArrayList並再次迭代ArrayList
- 12. 如何迭代的ArrayList
- 13. Arraylist讀取最後一個元素作爲第二個最後一個元素
- 14. 如何同時迭代兩個ArrayList?
- 15. 如何迭代和修改這個Arraylist?
- 16. 如何找出如果循環迭代是最後一個
- 17. jquery如何從最後一次迭代傳遞變量?
- 18. 迭代對於第二到最後一個元素列表中的
- 19. 放棄最後一個ArrayList
- 20. ArrayList檢索第一個和最後一個結果沒有排序ArrayList
- 21. 迭代地在數組中添加第一個和最後一個數字
- 22. jjsp在從ajax得到響應後迭代arraylist值
- 23. 我如何使用迭代的最後一個元素
- 24. 如何在jQuery中捕捉$ .each中的最後一個迭代?
- 25. 如何迭代沒有最後一個元素的列表
- 26. rapidxml:如何迭代節點?留下最後一個兄弟
- 27. OnCurrent事件觸發從第一個記錄移動到最後但不是從最後到第一個
- 28. 在Python中,如何迭代一個迭代器,然後迭代另一個迭代器?
- 29. SAS到R代碼第一個和最後一個功能
- 30. 迭代ArrayList的
你爲什麼不只是'list.remove(則爲list.size() - 1)'? –
如何查看List的api文檔。在文檔中尋找「迭代器」應該有所幫助。 –
公平,但我問的原因是因爲我有使用foreach的問題,並改變我的代碼使用while和hasNext Iterator組合,所以我想改變我的代碼更穩健的東西,如果這是有道理的 –