Articles of java stream

Quel détail d’implémentation rend ce code si difficile?

Cette question ne concerne pas le fait bien connu et documenté que HashMap n’est pas HashMap threads, mais ses modes de défaillance spécifiques sur HotSpot et le code JDK. Je suis surpris de la facilité avec laquelle ce code échoue avec un NPE: public static void main(Ssortingng[] args) { Map m = new HashMap(0, 0.75f); […]

Java 8 stream stream de données imprévisible sans raison évidente

J’utilise les stream Java 8 pour parcourir une liste de sous-listes. La taille de la liste externe varie entre 100 et 1000 (tests différents) et la taille de la liste interne est toujours 5. Il existe 2 tests de performances qui montrent des écarts de performance inattendus. package benchmark; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.infra.Blackhole; import java.io.IOException; […]

Java 8 ne dispose-t-il pas d’un Stream.concat travaillant sur un varags de stream?

Actuellement, nous avons le Stream.concat suivant dans Java 8: public static Stream concat(Stream a, Stream b); Je suis surpris de savoir pourquoi il n’y a pas de version prenant un varargs de Stream Stream ? Actuellement, j’ai un code écrit comme: Stream resultStream = Stream.concat(stream1, Stream.concat(stream2, Stream.of(element))) .filter(x -> x != 0) .filter(x -> x […]

Méthode la plus simple pour créer une goyave MultiMap à partir d’un stream java8

J’ai un List et Multimap veux un Multimap où nous avons regroupé les Foo par leur fonction getId() . J’utilise Java 8 et c’est presque génial que vous puissiez faire: List foos = … Map<String, List> foosById = foos.stream().collect(groupingBy(Foo::getId)); Cependant, j’ai une bonne quantité de code qui veut un MultiMap donc cela ne me sauve […]

Flux Java toArray () convertir en un type de tableau spécifique

Peut-être que c’est très simple, mais je suis en fait un noob sur les fonctionnalités de Java 8 et je ne sais pas comment y parvenir. J’ai cette ligne simple qui contient le texte suivant: “Clé, nom” et je veux convertir cette ligne en un tableau Ssortingng, en séparant chaque valeur par la virgule (,), […]

Est-il possible de réutiliser un Stream?

J’apprends les nouvelles fonctionnalités de Java 8 et, tout en expérimentant avec des stream ( java.util.stream.Stream ) et des collecteurs, j’ai réalisé qu’un stream ne peut pas être utilisé deux fois. Est-il possible de le réutiliser?

Collection à diffuser dans une nouvelle collection

Je cherche le moyen le plus simple de filtrer une collection. Je pense à quelque chose comme Collection foo = existingCollection.stream().filter( … ). … Mais je ne suis pas sûr de la meilleure façon de passer du filtre, à retourner ou à remplir une autre collection. La plupart des exemples semblent être comme “et ici […]

Qu’est-ce qu’une opération «escape-hatch» dans un stream Java?

Je lisais les documents Java et j’ai rencontré cette phrase : À l’exception de iterator() et de spliterator() , les opérations d’échappement-hachure, l’exécution commence à l’invocation de l’opération du terminal et se termine à la fin de l’opération du terminal. Je ne suis pas sûr de ce que signifie “opérations d’échappement”. Quelqu’un pourrait-il expliquer ce […]

Comment appliquer plusieurs prédicats à un java.util.Stream?

Comment puis-je appliquer plusieurs prédicats à java.util.Stream’s méthode filter() java.util.Stream’s ? C’est ce que je fais maintenant, mais je ne l’aime pas vraiment. J’ai un Collection de choses et je dois réduire le nombre de choses en fonction de la Collection de filtres (prédicats): Collection things = someGenerator.someMethod(); List filtered = things.parallelStream().filter(p -> { for […]

Quand faut-il privilégier les stream par rapport aux boucles traditionnelles pour obtenir les meilleures performances? Les stream profitent-ils de la prédiction de twig?

Je viens de lire à propos de Branch-Prediction et je voulais essayer comment cela fonctionne avec Java 8 Streams. Cependant, les performances avec Streams se révèlent toujours pires que les boucles traditionnelles. int totalSize = 32768; int filterValue = 1280; int[] array = new int[totalSize]; Random rnd = new Random(0); int loopCount = 10000; for […]