SORU
28 NİSAN 2015, Salı


Java bir sıralama ile çalışmak için 8 yol

En iyi yolu Java 8'de ne bir numaralama tüm değerleri ile çalışmak için merak ediyorum. Tüm değerleri almak ve örneğin bir yere eklemek için, aşağıdaki numaralama var diyelim ki gerektiğinde özellikle:

public enum Letter {
 A, B, C, D;
}

Elbette aşağıdakileri yapabilirim:

for (Letter l : Letter.values()) {
    foo(l);
}

Ama, ayrıca numaralama tanımı için aşağıdaki yöntemi ekleyin:

public static Stream<Letter> stream() {
    return Arrays.stream(Letter.values());
}

Ve sonra için yukarıda: değiştirin

Letter.stream().forEach(l -> foo(l));

Bu yaklaşım, OK veya tasarım ya da performans biraz suçum var mı? Ayrıca, neden çeteleler akışı yok() yöntemi?

CEVAP
28 NİSAN 2015, Salı


-Üçüncü bölümde cevap: üç sorum var:

Görünüm tasarım bir noktadan tamam mı?

Kesinlikle. Bunda yanlış bir şey yok. Eğer numaralama üzerinden yineleme bir sürü yapmak gerekiyorsa, akış API gitmek temiz ve küçük bir yöntem arkasında kazan plaka gizleme iyidir. OldCumudgeonversion s bile daha iyi. düşünün istiyorum rağmen

Performans bakımından itibaren tamam mı?

Büyük olasılıkla bir önemi yok. Çoğu zaman, çeteleler o kadar büyük değil. Bu nedenle, bir yöntem için orada ne olursa olsun veya diğer muhtemelen vakaların �.9 önemli değil.

Tabii ki, nereden 0.1% vardır. Bu durumda: ölçü doğru, gerçek-dünya veri ve tüketiciler.

Eğer vardı için bahis ediyorum bekliyoruz for each döngü için daha hızlı, bu haritalar daha doğrudan bellek modeli, ama yok o zaman konuşmaya performans ve yok melodi önce orada gerçek bir ihtiyaç için ayarlama. İkinci okuma ve sadece kod tarzı performansı hakkında endişe sonra ilk doğru, kolay bir şekilde kod yazın.

Neden Çeteleler düzgün Akış API entegre değil mi?

Eğer Java Stream diğer birçok dilde eşdeğer API karşılaştırırsanız, gerçekten sınırlı görünüyor. Eksik olan çeşitli parçaları (Akarsu, örneğin olarak yeniden Dere ve Optionals) vardır. Diğer yandan, Akış API uygulama kesinlikle API için büyük bir değişim oldu. Bir nedenden dolayı ertelendi birden çok kez oldu. Oracle en önemli kullanım durumları değişiklikleri sınırlamak için istedim. Çeteleler zaten pek kullanılmaz. Tabii, her projenin bir çift var, ama Listeleri ve diğer Koleksiyon sayısı kıyaslanamaz bile. Bir Numaralama olduğu zaman bile, birçok durumda hiç üzerine yineleme olmayacak. Listeler ve Ayarlar, diğer taraftan, muhtemelen hemen hemen her zaman içinde tekrarlanır. Ben bu Çeteleler Akım, dünyanın kendi adaptörü alamadım neden olduğunu varsayalım. Bu daha gelecek sürümlerde eklenen alır mı göreceğiz. Ve o zamana kadar hep Arrays.stream kullanabilirsiniz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • tatermoog

    tatermoog

    2 AĞUSTOS 2006
  • TimMinchinLive

    TimMinchinLi

    23 ŞUBAT 2009
  • Tylerron

    Tylerron

    6 AĞUSTOS 2006