java: ters listesi | Netgez.com
SORU
18 EKİM 2010, PAZARTESİ


java: ters listesi

Bir liste üzerinde ters bir liste görünümü (List#sublist bir listesi alt liste görünümü sağlar daha benzer bir şekilde) olmasını istiyorum. Bu işlevselliği sağlayan bir işlevi var mı?

Listenin kopyasını herhangi bir sıralama yapmak ne de listeyi değiştirmek istemiyorum.

Eğer bu durumda yine de bir liste en azından ters bir yineleyici alabilirsem yeterli olacaktır.


Ayrıca, bu kendimi nasıl uygulanacağını biliyorum. Eğer sadece Java zaten böyle bir şey mutlaka vardır diye soruyorum.

Uygulama Demo:

static <T> Iterable<T> iterableReverseList(final List<T> l) {
    return new Iterable<T>() {
        public Iterator<T> iterator() {
            return new Iterator<T>() {
                ListIterator<T> listIter = l.listIterator(l.size());                    
                public boolean hasNext() { return listIter.hasPrevious(); }
                public T next() { return listIter.previous(); }
                public void remove() { listIter.remove(); }                 
            };
        }
    };
}

Ben sadece List bazı uygulamalar ihtiyacım olan descendingIterator() olması gerekiyor. List genel uygulama böyle olmasına rağmen yok. LinkedList gördüğüm uygulanması List herhangi bir iş için genel olduğundan biraz garip bir durum.

CEVAP
18 EKİM 2010, PAZARTESİ


Guava saÄŸlar: Lists.reverse(List)

List<String> letters = ImmutableList.of("a", "b", "c");
List<String> reverseView = Lists.reverse(letters); 
System.out.println(reverseView); // [c, b, a]

Collections.reverse, aksine bu tamamen birgörünüm... orijinal listedeki öğelerin sırasını değiştirmez. Ayrıca, değiştirilebilir, özgün bir liste ile, orijinal liste ve görünümü, hem de değişiklik diğer yansıması.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 24 Канал

    24 КанаÐ

    5 ÅžUBAT 2006
  • Ben Schoon

    Ben Schoon

    23 Kasım 2012
  • campos9896

    campos9896

    24 Mart 2012