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

  • ipsy

    ipsy

    1 EKİM 2012
  • The Exploiteers

    The Exploite

    4 Ocak 2011
  • VOICE TV

    VOICE TV

    2 Aralık 2010