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

  • BeginnersTech

    BeginnersTec

    8 NİSAN 2011
  • BroadCity

    BroadCity

    10 ŞUBAT 2010
  • H3Ctic (old channel)

    H3Ctic (old

    23 Mart 2011