«java-8» etiketlenmiş sorular

Java platformunun 18 Mart 2014'te yayınlanan sürüm 8'i (iç sayı 1.8) olan Java 8'e özgü sorular için bu etiketi kullanın. Çoğu durumda, java etiketini de belirtmeniz gerekir.

3
Lambda ifadesi, her yürütüldüğünde öbek üzerinde bir nesne oluşturur mu?
Java 8'in yeni sözdizimsel şekerini kullanarak bir koleksiyonu yinelediğimde, myStream.forEach(item -> { // do something useful }); Bu, aşağıdaki 'eski sözdizimi' snippet'ine eşdeğer değil mi? myStream.forEach(new Consumer<Item>() { @Override public void accept(Item item) { // do something useful } }); Bu Consumer, bir koleksiyon üzerinde her yineleme yaptığımda öbek üzerinde …
182 java  lambda  java-8 

9
Bir akışı ters sırada sıralamak için Java8 lambda nasıl kullanılır?
Bir liste sıralamak için java lambda kullanıyorum. nasıl tersine sıralayabilirim? Bunu görene yazı ama Java'nın 8 lambda kullanmak istiyorum. İşte bir hack olarak benim kod (* -1 kullandım) Arrays.asList(files).stream() .filter(file -> isNameLikeBaseLine(file, baseLineFile.getName())) .sorted(new Comparator<File>() { public int compare(File o1, File o2) { int answer; if (o1.lastModified() == o2.lastModified()) { …

4
Standart Kotlin kütüphanesinde hangi Java 8 Stream.collect eşdeğerleri bulunmaktadır?
Java 8'de, Stream.collectkoleksiyonlarda toplamalara izin veren var . Kotlin'de bu, stdlib'deki uzatma işlevlerinin bir koleksiyonu olarak değil, aynı şekilde mevcut değildir. Ancak farklı kullanım durumları için denkliklerin ne olduğu açık değildir. Örneğin , JavaDoc'un üst kısmındaCollectors Java 8 için yazılmış örnekler vardır ve bunları Kolin'e taşırken, farklı bir JDK sürümündeyken …

5
Akışları kullanarak BigDecimal'leri ekleme
Ben LinkedListbirlikte eklemek istiyorum BigDecimals (bu örnekte, a ) bir koleksiyon var . Bunun için akış kullanmak mümkün mü? StreamSınıfın birkaç yöntemi olduğunu fark ettim Stream::mapToInt Stream::mapToDouble Stream::mapToLong Her birinin uygun bir sum()yöntemi vardır. Ancak, bildiğimiz gibi floatve doublearitmetik neredeyse her zaman kötü bir fikirdir. Yani, BigDecimal'leri özetlemenin uygun bir …


2
Genel dönüş tipi üst sınır - arabirim ve sınıf - şaşırtıcı derecede geçerli kod
Bu, bir üçüncü taraf kütüphane API'sinden gerçek dünyadaki bir örnektir, ancak basitleştirilmiştir. Oracle JDK 8u72 ile derlenmiştir Bu iki yöntemi düşünün: <X extends CharSequence> X getCharSequence() { return (X) "hello"; } <X extends String> X getString() { return (X) "hello"; } Her ikisi de "denetlenmeyen bir oyuncu kadrosu" uyarısı veriyor …
171 java  generics  java-8 

5
Ok operatörü '->' Java'da ne yapar?
Bazı kodları araştırırken ok operatörüne rastladım, tam olarak ne yapıyor? Java'nın ok operatörü olmadığını düşündüm. return (Collection<Car>) CollectionUtils.select(listOfCars, (arg0) -> { return Car.SEDAN == ((Car)arg0).getStyle(); }); Ayrıntılar : Java 6, Apache Commons Koleksiyonu, IntelliJ 12 Güncelleme / Yanıt: IntelliJ 12'nin lambdas'ı destekleyen Java 8'i desteklediği ve "katlandığı" anlaşılıyor ve bunları …

6
Java 8 akış API'sında sayarak gruplama
Gruplama yapmak için Java 8 akışı API'sinde basit bir yol bulmaya çalışıyorum, bu karmaşık yolla çıkıyorum! List<String> list = new ArrayList<>(); list.add("Hello"); list.add("Hello"); list.add("World"); Map<String, List<String>> collect = list.stream().collect( Collectors.groupingBy(o -> o)); System.out.println(collect); List<String[]> collect2 = collect .entrySet() .stream() .map(e -> new String[] { e.getKey(), String.valueOf(e.getValue().size()) }) .collect(Collectors.toList()); collect2.forEach(o -> …

15
Java 8: Lambda-Akışları, İstisnai Olarak Yöntemle Filtreleme
Java 8 Lambda ifadelerini denemekte bir sorun var. Genellikle iyi çalışıyor, ama şimdi IOException's atmak yöntemleri var . Aşağıdaki koda bakarsanız en iyisi: class Bank{ .... public Set<String> getActiveAccountNumbers() throws IOException { Stream<Account> s = accounts.values().stream(); s = s.filter(a -> a.isActive()); Stream<String> ss = s.map(a -> a.getNumber()); return ss.collect(Collectors.toSet()); } …

8
Intellij - Daha yeni Java 8 sınıfları kullanılamıyor - Hata: “Since 1.6+ olarak belgelenen API kullanımı ..”
Bir java.lang.function.Functionjava 8 kod tabanı kullanmaya çalışıyorum , ancak Intellij aşağıdaki hatayı almaya devam. Since 1.6+ olarak belgelenen API kullanımı Bu inceleme, kendi belgelerinde since etiketi bulunan yöntemlerin tüm kullanımlarını bulur. Bu, geliştirme, üretim için hedef platform olarak daha yeni SDK sürümü altında gerçekleştirildiğinde faydalı olabilir Doğru Proje ve Derleyici …

8
Bir akışa iki Java 8 akışı veya fazladan bir öğe ekleme
Akışları veya ekstra öğeleri ekleyebilirim, şöyle: Stream stream = Stream.concat(stream1, Stream.concat(stream2, Stream.of(element)); Ve devam ederken yeni şeyler ekleyebilirim, şöyle: Stream stream = Stream.concat( Stream.concat( stream1.filter(x -> x!=0), stream2) .filter(x -> x!=1), Stream.of(element)) .filter(x -> x!=2); Ama bu çirkin, çünkü concatstatik. Bir concatörnek yöntemi olsaydı, yukarıdaki örnekleri okumak çok daha kolay …


9
Bir Koleksiyonu veya Akışı iade etmeli miyim?
Üye listesine salt okunur bir görünüm döndüren bir yöntemim olduğunu varsayalım: class Team { private List < Player > players = new ArrayList < > (); // ... public List < Player > getPlayers() { return Collections.unmodifiableList(players); } } Ayrıca, tüm müşterinin yaptığı listenin hemen üzerinde bir kez yinelendiğini varsayalım. …


6
Değerleri yalnızca Java8'de lambda kullanarak null değilse filtreleyin
Diyelim ki nesnelerin bir listesi var car. Bu listeyi Java 8 kullanarak bazı parametrelere göre filtrelemek istiyorum. Ancak parametre ise null, atar NullPointerException. Boş değerler nasıl filtrelenir? Mevcut kod aşağıdaki gibidir requiredCars = cars.stream().filter(c -> c.getName().startsWith("M")); Bu atar NullPointerExceptioneğer getName()getiri null.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.