20 Ocak 2010, ÇARŞAMBA
Java tersten bir liste boyunca yineleme
Kod parçası jenerik yararlanmak için geçiş yapıyorum. Bunu yapmak için bir bağımsız değişken için döngü dizinleri kayıtlarını tutmak, apaçık bir yineleyici kullanarak daha çok daha temiz olmasıdır.
Yaklaşık yarım durumlarda, list (ArrayList) bir dizin kullanarak tersten tekrarlanır.
Birisi Bu koleksiyon ile çalışırken döngü endeksli sevmediğim beri) yapmak için daha temiz bir yol önerebilirsiniz?
for (int i = nodes.size() - 1; i >= 0; i--) {
final Node each = (Node) nodes.get(i);
...
}
Not:Bu yapışkan notlar dışında herhangi bir yeni bağımlılıkları eklemek istemiyorum.
Kabul cevabı aldı ve döndü:
class ListReverser<T> implements Iterable<T> {
private ListIterator<T> listIterator;
public ListReverser(List<T> wrappedList) {
this.listIterator = wrappedList.listIterator(wrappedList.size());
}
public Iterator<T> iterator() {
return new Iterator<T>() {
public boolean hasNext() {
return listIterator.hasPrevious();
}
public T next() {
return listIterator.previous();
}
public void remove() {
listIterator.remove();
}
};
}
}
Olarak kullanılabilir:
for (final Node each : new ListReverser<Node>(nodes)) {
//...
}
Harika, ama daha iyi değil.
CEVAP
20 Ocak 2010, ÇARŞAMBA
Bunu deneyin:
// Substitute appropriate type.
ArrayList<...> a = new ArrayList<...>();
// Add elements to list.
// Generate an iterator. Start just after the last element.
ListIterator li = a.listIterator(a.size());
// Iterate in reverse.
while(li.hasPrevious()) {
System.out.println(li.previous());
}
Bunu Paylaş:
Bir liste boyunca yineleme, döngü çıka...
Java bir Liste üzerinde yineleme için ...
JSON ilişkisel dizi için bir anahtar l...
döngü numaralama üzerinde yineleme içi...
Java nasıl yeni bir Liste yapmak için...