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
을 반복 할 수 있지만 당신은 당신의 ArrayList
에서 삭제 항목의 목적으로 ListIterator<T>
를 사용하여 더 나을 것 :
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에 대한 의견이 1 분 전에 마지막 요소를 제거하는 1 개의 라이너로 게시되었습니다. 그게 충분하지 않으면 아마도 당신의 요구 사항을 날카롭게해야합니다 – Cruncher
"-1"없이 listIterator() 메서드 내에서 마지막 코드가 작동했습니다 : "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. 이러한 ArrayList를 반복하는 더 나은 방법은 무엇입니까?
- 2. 객체의 arraylist를 반복하는 방법
- 3. hasmap에서 arraylist를 반복하고 arraylist를 다시 반복하는 방법
- 4. (JSP2-MVC) Java bean의 arraylist를 반복하는 방법은 무엇입니까?
- 5. JSTL을 사용하여 객체 배열의 ArrayList를 반복하는 방법은 무엇입니까?
- 6. ArrayList를 반복하는 동안 발견 된 항목을 추가하는 방법은 무엇입니까?
- 7. Generics - ArrayList를 반복하는 동안 ClassCastException
- 8. DataInputStream을 반복하는 방법은 무엇입니까?
- 9. arrayList를 수정하는 방법은 무엇입니까?
- 10. 해시 맵 요소의 arraylist를 올바르게 반복하는 방법
- 11. 처리 중 ArrayList를 반복하는 동안 예외가 발생했습니다.
- 12. SIGALRM을 반복하는 방법은 무엇입니까?
- 13. 목록을 반복하는 방법은 무엇입니까?
- 14. Intentservice를 반복하는 방법은 무엇입니까?
- 15. 변수를 반복하는 방법은 무엇입니까?
- 16. QAbstractListModel을 반복하는 방법은 무엇입니까?
- 17. MP3를 반복하는 방법은 무엇입니까?
- 18. textview를 반복하는 방법은 무엇입니까?
- 19. 레이아웃을 반복하는 방법은 무엇입니까?
- 20. 반복적으로 반복하는 방법은 무엇입니까?
- 21. ManyToManyField를 반복하는 방법은 무엇입니까?
- 22. 목록을 반복하는 방법은 무엇입니까?
- 23. 루프를 반복하는 방법은 무엇입니까?
- 24. WPF에서 ItemsControl을 반복하는 방법은 무엇입니까?
- 25. ArrayList.subList에서 ArrayList를 얻는 방법은 무엇입니까?
- 26. ArrayList를 새로 고치는 방법은 무엇입니까?
- 27. 함수에서 arraylist를 반환하는 방법은 무엇입니까?
- 28. arraylist를 변수로 지정하는 방법은 무엇입니까?
- 29. SugarORM에 ArrayList를 저장하는 방법은 무엇입니까?
- 30. FileOutputStream의 ArrayList를 사용하는 방법은 무엇입니까?
이유는()하지 방금'list.remove (는 list.size을 - 1)'? –
List의 API 문서를 살펴 보는 것은 어떻습니까? 문서의 "iterator"를 찾는 것이 도움이 될 것입니다. –
공정한 그러나 내가 물어 보는 이유는 foreach를 사용하면서 문제가 발생하여 while 및 hasNext 반복자를 사용하도록 코드를 변경했기 때문에 내 코드를 좀 더 견고하게 바꾸고 싶었 기 때문입니다. –