SORU
31 AĞUSTOS 2013, CUMARTESİ


Kısa ve öz bir şekilde Java 8'de endeksleri ile bir dere üzerinde yineleme var mı?

Kısa ve öz bir şekilde stream ederken akışında dizin erişimi olan üzerinde yineleme var mı?

Şu ana kadar (challenge 2 here) karşılaştığım en iyisidir

String[] names = {"Sam","Pamela", "Dave", "Pascal", "Erik"};

List<String> nameList;
Stream<Integer> indices = intRange(1, names.length).boxed();
nameList = zip(indices, stream(names), SimpleEntry::new)
        .filter(e -> e.getValue().length() <= e.getKey())
        .map(Entry::getValue)
        .collect(toList());

SERİ örnek göz önüne alındığında kıyasla oldukça hayal kırıklığı gibi görünüyor

string[] names = { "Sam", "Pamela", "Dave", "Pascal", "Erik" };
var nameList = names.Where((c, index) => c.Length <= index   1).ToList();

Daha kısa bir yolu var mı?

Ayrıca zip veya kaldırılmış taşındı sanırım

CEVAP
31 AĞUSTOS 2013, CUMARTESİ


En temiz yolu endeksleri akışı başlamak için:

String[] names = {"Sam", "Pamela", "Dave", "Pascal", "Erik"};
IntStream.range(0, names.length)
         .filter(i -> names[i].length() <= i)
         .mapToObj(i -> names[i])
         .collect(Collectors.toList());

Çıkan listede "Erik" sadece içerir.


Döngüler için kullanılan daha tanıdık olan bir alternatif geçici bir sayaç değişken bir nesne kullanarak korumak için, örneğin AtomicInteger: bir olurdu

String[] names = {"Sam", "Pamela", "Dave", "Pascal", "Erik"};
AtomicInteger index = new AtomicInteger();
List<String> list = Arrays.stream(names)
                          .filter(n -> n.length() <= index.incrementAndGet())
                          .collect(Collectors.toList());

Unutmayınparalel bir dere üzerinde ikinci yöntemi kullanarak öğeleri olmaz gibi kırılmasına neden olabilir necesarily işlenecek "sırada".

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Karan Thakur

    Karan Thakur

    23 HAZİRAN 2010
  • Learn word 2013 tutorials

    Learn word 2

    5 AĞUSTOS 2014
  • UsherVEVO

    UsherVEVO

    15 EKİM 2009

İLGİLİ SORU / CEVAPLAR