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

  • Cristina Landa

    Cristina Lan

    28 Ocak 2010
  • FrameCityJackal

    FrameCityJac

    4 Aralık 2010
  • huyked

    huyked

    28 Mart 2008