Java bir sıralama ile çalışmak için 8 yol | Netgez.com
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. OldCumudgeon’version 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

  • Alan Fullmer

    Alan Fullmer

    3 EYLÃœL 2010
  • HouseholdHacker

    HouseholdHac

    6 Kasım 2007
  • TheGamer2323

    TheGamer2323

    25 Ocak 2009