Tamsayıların bir listesini toplamak istiyorum. Aşağıdaki gibi çalışır, ancak sözdizimi doğru hissetmez. Kod optimize edilebilir mi?
Map<String, Integer> integers;
integers.values().stream().mapToInt(i -> i).sum();
i -> içok net buluyorum . Evet, değerin otomatik olarak kutudan çıkarılacağını bilmeniz gerekiyor, ancak Java 5'ten beri doğru ...
foo(int i)bunu foo(myInteger.intValue());her çağırdıklarında yazmazlar (ya da en azından beklemiyorum !!). Sana katılıyorum, bu Integer::intValuedaha açık ama aynı şey burada da geçerli. İnsanlar sadece bir kez öğrenmeli ve sonra bitirdiniz :-). Biraz sihirli bir şaşkınlık gibi değil.
i -> ino-op ve conceptionally gibi görünüyor, bu ise no-op. Elbette, başlık altında Integer.intValue()denir, ancak başlık altında daha da derin, bu yöntemler tam olarak kaynak kodunda göründüğü no-op haline gelir. Integer::intValue, bayt kodunda sentetik bir yöntem oluşturmamanın bonus noktasına sahiptir, ancak kaynak kodunuzu nasıl düzenleyeceğinize karar vermenizi gerektirmez.
mapToLongHaritanızın sahip olabileceği değerlere bağlı olarak taşmaları önlemek için kullanmak isteyebilirsiniz .