«java-stream» etiketlenmiş sorular

Akış API'sının kullanımı ile ilgili sorular için bu etiketi kullanın. Java 8'de tanıtıldı ve koleksiyonlardaki filtre-harita-azaltma boru hatları gibi değer akışlarında işlevsel stil işlemlerini destekler.

3
Statik başlatıcıda lambda ile paralel akış neden kilitlenmeye neden oluyor?
Statik başlatıcıda bir lambda ile paralel akış kullanmanın, CPU kullanımı olmadan görünüşte sonsuza kadar sürdüğü garip bir durumla karşılaştım. İşte kod: class Deadlock { static { IntStream.range(0, 10000).parallel().map(i -> i).count(); System.out.println("done"); } public static void main(final String[] args) {} } Bu, bu davranış için minimum yeniden üretim testi senaryosu gibi …

4
Bir akışta Collections.toMap () kullanırken Listenin yineleme sırasını nasıl koruyabilirim?
Ben oluşturma Mapbir gelen Listaşağıdaki gibi: List<String> strings = Arrays.asList("a", "bb", "ccc"); Map<String, Integer> map = strings.stream() .collect(Collectors.toMap(Function.identity(), String::length)); İle aynı yineleme sırasını korumak istiyorum List. Yöntemleri LinkedHashMapkullanarak nasıl oluşturabilirim Collectors.toMap()?

10
Java 8: Lambda'nın yinelemelerini saymanın tercih edilen yolu?
Aynı problemle sık sık karşılaşıyorum. Lambda dışında kullanmak için bir lambda sayısını saymam gerekiyor . Örneğin: myStream.stream().filter(...).forEach(item -> { ... ; runCount++}); System.out.println("The lambda ran " + runCount + "times"); Sorun, runCount'un olması gerektiğidir final, bu nedenle bir int. O olamaz Integerçünkü bu değişmez . Bunu sınıf seviyesinde değişken (yani …

9
Java 8: Lambda'yı satırsonu ve girintiyle biçimlendirme
Lambda girintisi ile elde etmek istediğim şey şudur: Çok satırlı açıklama: String[] ppl = new String[] { "Karen (F)", "Kevin (M)", "Lee (M)", "Joan (F)", "Des (M)", "Rick (M)" }; List<String> strings = Arrays.stream(ppl) .filter( (x) -> { return x.contains("(M)"); } ).collect(Collectors.toList()); strings.stream().forEach(System.out::println); Tek satırlık açıklama: List<String> strings = Arrays.stream(ppl) …

5
Bir Java 8 akışını Guava ImmutableCollection'a nasıl toplayabilirim?
Aşağıdakileri yapmak istiyorum: List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList()); ancak ortaya çıkan liste bir şekilde Guava'nın bir uygulamasıdır ImmutableList. Yapabileceğimi biliyorum List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList()); List<Integer> immutableList = ImmutableList.copyOf(list); ama doğrudan ona toplamak istiyorum. denedim List<Integer> list = IntStream.range(0, 7) .collect(Collectors.toCollection(ImmutableList::of)); ama bir istisna yarattı: com.google.common.collect.ImmutableCollection.add (ImmutableCollection.java:96) adresinde java.lang.UnsupportedOperationException

3
Sayısal olarak değerlendirilmeyen ara akış işlemleri
Görünüşe göre Java'nın akış işlemlerini bir akış hattına nasıl dönüştürdüğünü anlamakta sorun yaşıyorum. Aşağıdaki kodu yürütürken public static void main(String[] args) { StringBuilder sb = new StringBuilder(); var count = Stream.of(new String[]{"1", "2", "3", "4"}) .map(sb::append) .count(); System.out.println(count); System.out.println(sb.toString()); } Konsol yalnızca yazdırır 4. StringBuilderNesne halen değerine sahiptir "". Filtre …
33 java  java-stream 

2
Sayı 0'a eşit olduğunda bir akışla sınır (numara) çağrısını nasıl atlayabilirim?
Nesneleri sağlayan bazı Java kodu var items. Bunları aşağıdakilere dayalı olarak sınırlar maxNumber: items.stream() .map(this::myMapper) .filter(item -> item != null) .limit(maxNumber) .collect(Collectors.toList()); Düzgün çalışır, ancak soru şudur: Zaman sınırlamasını atlamanın bir yolu var mı maxNumber == 0? Bunu yapabileceğimi biliyorum: if (maxNumber == 0) { items.stream() .map(this::myMapper) .filter(item -> item …


3
Paralel Sonsuz Java Akışları Bellek Yetersiz
Aşağıdaki Java programının neden verdiğini anlamaya çalışıyorum OutOfMemoryError, karşılık .parallel()gelmeyen program yok. System.out.println(Stream .iterate(1, i -> i+1) .parallel() .flatMap(n -> Stream.iterate(n, i -> i+n)) .mapToInt(Integer::intValue) .limit(100_000_000) .sum() ); İki sorum var: Bu programın amaçlanan çıktısı nedir? Olmadan .parallel()öyle görünüyor ki bu basitçe çıkışları sum(1+2+3+...)sadece mantıklı flatMap ilk akışının en "takılıp …

5
Bir haritadan farklı değerlerle nasıl harita üretilir (ve BinaryOperator kullanarak sağ tuş kullanılır)?
Bir harita var Map<K, V>ve amacım yinelenen değerleri kaldırmak ve aynı yapıyı Map<K, V>tekrar çıktı . Çoğaltılmış değer bulunursa halinde, bir anahtar (orada seçilmelidir kiki tuşları (den) k1ve k1bu değerleri tutun), bu nedenle, farz BinaryOperator<K>vererek kgelen k1ve k2kullanılabilir. Örnek giriş ve çıkış: // Input Map<Integer, String> map = new HashMap<>(); …

2
Bu Java 8 Stream collect () yöntemini nasıl anlayabilirim?
Bir int dizisini List'e dönüştürmeye çalışıyordum ve Java 8 Stream kullanmanın alışılmadık yolunu seçtim ve bununla geldim Arrays.stream(arr).boxed().collect(Collectors.toList()); Hala bu çizgiyi tam olarak anlamakta zorlanıyorum, çoğunlukla, Collectors.toList()Bu durumda neden bir ArrayList<Integer>uygulama Listarayüzü döndürülüyor ? Neden olmasın LinkedList<Integer>veya Listarayüze uygun başka bir genel sınıf ? API Notları bölümünde, burada ArrayList'ten kısaca …

2
Boyutu bilinmeyen dengesiz bir Spliterator'ı yeniden dengeleyebilir misiniz?
Ben bir Streambilinmeyen numara (dosya sayısı açık olarak bilinmemektedir) uzaktan depolanan JSON dosyaları heterojen bir dizi işleme paralelleştirmek için kullanmak istiyorum . Dosyaların boyutu, dosya başına 1 JSON kaydından diğer bazı dosyalarda 100.000 kayda kadar büyük ölçüde değişebilir. Bu durumda bir JSON kaydı , dosyada bir satır olarak temsil edilen …

3
Java paralel akışı - parallel () yönteminin çağrılma sırası [kapalı]
Kapalı . Bu sorunun daha fazla odaklanması gerekiyor . Şu anda cevapları kabul etmiyor. Bu soruyu geliştirmek ister misiniz? Soruyu, yalnızca bu yayını düzenleyerek tek bir soruna odaklanacak şekilde güncelleyin . 4 gün önce kapalı . AtomicInteger recordNumber = new AtomicInteger(); Files.lines(inputFile.toPath(), StandardCharsets.UTF_8) .map(record -> new Record(recordNumber.incrementAndGet(), record)) .parallel() .filter(record …
11 java  java-stream 

3
A'nın a'dan önce gelmesi ve B'nin b'den önce gelmesi için Özel Sıralama
Bunun gibi renklerin bir listesi var: Pembe, mavi, kırmızı, mavi, gri, yeşil, mor, siyah ... vb List<String> listOfColors = Arrays.asList("Pink", "Blue", "Red", "blue", "Grey", "green", "purple", "black"); Bazı meyve renklerini filtrelemek gibi bazı ara işlemler var, şimdi sıralı olarak sıralanmasını istediğim filtreli sonuçlarla kaldım: Mavi, siyah, mavi, gri, yeşil, pembe, …

2
Java8'deki veri listesini temizleme
Bir veri listesini temizlemek için, veri listesini ve gerçekleştirilecek temizlik işlemi listesini kabul eden bir yöntem oluşturdum. public <T> List<T> cleanData(List<T> data, List<Function<T, T>> cleanOps) { List<T>dataNew=data.stream().map((str) -> { T cleanData = str; for(Function<T,T> function:cleanOps) { cleanData=function.apply(cleanData); } return cleanData; }).collect(Collectors.toList()); return dataNew; } Buradaki sorun, Collectors.toList()yeni bir liste döndürürken …

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.