«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.

9
<T> Akışı neden Tekrarlanabilir <T> uygulamıyor?
Java 8'de , merakla bir yöntemi olan Stream &lt;T&gt; sınıfına sahibiz Iterator&lt;T&gt; iterator() Dolayısıyla , tam olarak bu yöntemi gerektiren Yinelenebilir &lt;T&gt; arabirimini uygulamasını beklersiniz , ancak durum böyle değildir. Bir foreach döngüsü kullanarak bir Stream üzerinde yineleme yapmak istediğimde, public static Iterable&lt;T&gt; getIterable(Stream&lt;T&gt; s) { return new Iterable&lt;T&gt; { …


7
Akışları kullanarak harita oluştururken kopyaları yoksay
Map&lt;String, String&gt; phoneBook = people.stream() .collect(toMap(Person::getName, Person::getAddress)); java.lang.IllegalStateException: Duplicate keyÇoğaltılmış bir eleman bulunduğunda anlıyorum . Haritaya değer ekleme konusundaki bu istisnayı göz ardı etmek mümkün müdür? Yinelenen varsa, yinelenen anahtarı yok sayarak devam etmelidir.
257 java  java-8  java-stream 

3
Yinelenebilir <T> neden stream () ve parallelStream () yöntemleri sağlamaz?
IterableArayüzün neden stream()ve parallelStream()yöntemleri sağlamadığını merak ediyorum . Aşağıdaki sınıfı düşünün: public class Hand implements Iterable&lt;Card&gt; { private final List&lt;Card&gt; list = new ArrayList&lt;&gt;(); private final int capacity; //... @Override public Iterator&lt;Card&gt; iterator() { return list.iterator(); } } Bir Trading Kart Oyunu oynarken elinizde kartlar olabileceği için bir El uygulamasıdır …

3
Java 8 lambdas, Function.identity () veya t-> t
Daha fazla bilgi Yığın Taşması : Java 8, Java - Function.identity () или t-&gt; t? Function.identity()Yöntemin kullanımı ile ilgili bir sorum var . Aşağıdaki kodu düşünün: Arrays.asList("a", "b", "c") .stream() .map(Function.identity()) // &lt;- This, .map(str -&gt; str) // &lt;- is the same as this. .collect(Collectors.toMap( Function.identity(), // &lt;-- And this, …

12
Stream :: flatMap ile İsteğe Bağlı Java 8'leri Kullanma
Yeni Java 8 akış çerçevesi ve arkadaşları bazı çok özlü java kodu için yapmak, ama kısaca yapmak zor görünen basit bir durumla karşılaştım. A List&lt;Thing&gt; thingsve yöntemini düşünün Optional&lt;Other&gt; resolve(Thing thing). Ben Things ile eşlemek Optional&lt;Other&gt;ve ilk almak istiyorum Other. Açık çözüm kullanmak olacaktır things.stream().flatMap(this::resolve).findFirst(), ancak flatMapbir akış döndürmenizi gerektirir …

5
Java Akışları neden bir defaya mahsus?
IEnumerableBir yürütme hattının istediğimiz kadar çok yürütülebildiği C # 'ların aksine , Java'da bir akış yalnızca bir kez' yinelenebilir '. Herhangi bir terminal işlemine yapılan çağrı akışı kapatır ve kullanılamaz hale getirir. Bu 'özellik' çok fazla güç tüketir. Bunun nedeninin teknik olmadığını hayal ediyorum . Bu garip kısıtlamanın arkasındaki tasarım …

4
Java 8 Akışları: karmaşık koşullara karşı çoklu filtreler
Bazen bir filtreyi Streambirden fazla koşulla filtrelemek istersiniz : myList.stream().filter(x -&gt; x.size() &gt; 10).filter(x -&gt; x.isCool()) ... ya da karmaşık bir durum ve tek bir durumla aynı şeyi yapabilirsiniz filter: myList.stream().filter(x -&gt; x.size() &gt; 10 &amp;&amp; x -&gt; x.isCool()) ... Tahminimce ikinci yaklaşım daha iyi performans özelliklerine sahip, ama bunu …

19
Java Akışını 1 ve yalnızca 1 öğeye filtreleme
Bir Streamöğeleri bulmak için Java 8 s kullanmaya çalışıyorum LinkedList. Bununla birlikte, filtre kriterlerine bir ve tek bir eşleşme olduğunu garanti etmek istiyorum. Bu kodu al: public static void main(String[] args) { LinkedList&lt;User&gt; users = new LinkedList&lt;&gt;(); users.add(new User(1, "User1")); users.add(new User(2, "User2")); users.add(new User(3, "User3")); User match = users.stream().filter((user) …

5
Java 8 akışının .min () ve .max (): bu neden derleniyor?
Not: Bu soru, önceki bir SO sorusu olan ölü bir bağlantıdan kaynaklanmaktadır, ancak işte gidiyor ... Bu kodu ( not: Bu kod "işe yaramaz" ve bu Integer::comparekullanılması gerektiğini biliyorum - ben sadece bağlı sorudan ayıklayın ): final ArrayList &lt;Integer&gt; list = IntStream.rangeClosed(1, 20).boxed().collect(Collectors.toList()); System.out.println(list.stream().max(Integer::max).get()); System.out.println(list.stream().min(Integer::min).get()); Bir javadoc göre .min()ve .max()her …
215 java  java-8  java-stream 

9
Java8: Stream / Map-Reduce / Collector kullanarak HashMap <X, Y> ile HashMap <X, Z>
Basit bir Java "dönüşümü" bilen Listden Y-&gt; Zyani: List&lt;String&gt; x; List&lt;Integer&gt; y = x.stream() .map(s -&gt; Integer.parseInt(s)) .collect(Collectors.toList()); Şimdi temelde bir Harita ile aynı şeyi yapmak istiyorum, yani: INPUT: { "key1" -&gt; "41", // "41" and "42" "key2" -&gt; "42 // are Strings } OUTPUT: { "key1" -&gt; 41, // …

13
Bir nesne listesini toString () yönteminden elde edilen bir dizeye dönüştürmek için Java 8'i kullanma
Java 8'de birçok yararlı yeni şey var. Örneğin, bir nesne listesi üzerinden bir akışla yineleyebilir ve daha sonra Object'örneklerinin belirli bir alanındaki değerleri toplayabilirim . Örneğin public class AClass { private int value; public int getValue() { return value; } } Integer sum = list.stream().mapToInt(AClass::getValue).sum(); Bu nedenle, tek bir satırdaki …

4
Java 8 Akışı ve dizilerde çalışma
Yeni Java 8 akış yeteneklerini yeni keşfettim. Python'dan geldiğimde, iki diziyi "tek satırlı bir pitonik" şekilde çarparak, toplama gibi diziler üzerinde işlemler yapmanın düzgün bir yolu olup olmadığını merak ediyordum. Teşekkürler


19
Bir akışı yüklemle sınırlama
(Potansiyel olarak sonsuz) sınırlayan bir Java 8 akışı işlemi var mı Streamİlk öğe bir yüklemle eşleşene kadar mı? Java 9'da takeWhile10'dan küçük tüm sayıları yazdırmak için aşağıdaki örnekte olduğu gibi kullanabiliriz . IntStream .iterate(1, n -&gt; n + 1) .takeWhile(n -&gt; n &lt; 10) .forEach(System.out::println); Java 8'de böyle bir işlem …
187 java  java-8  java-stream 

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.