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

  • Flash CS6 Video Tutorials for Beginners (Actionscript 3 Gaming)

    Flash CS6 Vi

    14 EYLÜL 2012
  • InsideBlackBerry

    InsideBlackB

    14 Aralık 2009
  • TWiT Netcast Network

    TWiT Netcast

    27 EKİM 2005