Articles of java stream

java 8 Collector n’est pas une interface fonctionnelle, qui peut dire pourquoi?

Le code suivant: public class Test { public static void main(Ssortingng[] args) { Stream.of(1,2,3).map(Ssortingng::valueOf).collect(Collectors::toList) } } intellij me dit: Collector n’est pas une interface fonctionnelle mais quand je modifie le code comme suit, tout va bien, je ne sais pas pourquoi? public class Test { public static void main(Ssortingng[] args) { Stream.of(1,2,3).map(Ssortingng::valueOf).collect(Collectors.toList) } }

Implémenter le produit cartésien des collections par Java 8

Pour le moment, je ne peux implémenter que le produit cartésien de deux collections, en voici le code: public static <T1, T2, R extends Collection<Pair>> R getCartesianProduct( Collection c1, Collection c2, Collector<Pair, ?, R> collector) { return c1.stream() .flatMap(e1 -> c2.stream().map(e2 -> new Pair(e1, e2))) .collect(collector); } Ce code fonctionne bien dans IntelliJ , mais […]

Quel est l’ordre dans lequel les opérations de stream sont appliquées à la liste des éléments?

Supposons que nous ayons une chaîne de méthodes standard d’opérations de stream: Arrays.asList(“a”, “bc”, “def”).stream() .filter(e -> e.length() != 2) .map(e -> e.length()) .forEach(e -> System.out.println(e)); Existe-t-il des garanties dans le JLS concernant l’ordre dans lequel les opérations de stream sont appliquées aux éléments de la liste? Par exemple, est-il garanti que: L’application du prédicat […]

Créer un stream paresseusement

Comment créer un stream paresseusement? Pendant la migration du code basé sur la collection, j’ai rencontré ce modèle plusieurs fois: Collection collection = veryExpensiveCollectionCreation(); return Stream.concat(firstStream, collection.stream()); Le stream concaténé résultant est généralement traité paresseusement, comme nous le soaps. Par conséquent, la collecte coûteuse n’est pas du tout nécessaire si le traitement du stream s’arrête […]

Pourquoi Comparator.comparing ne fonctionne pas avec la référence à la méthode Ssortingng :: toLowerCase?

J’essaie de sortinger un tableau de chaînes par ordre inverse (en ignorant la casse), sans le modifier, et en l’imprimant simplement. J’utilise donc le stream Java8. Mais je n’arrive pas à le faire. Voici ma tentative: package experimentations.chapter02; import java.util.Arrays; import java.util.Comparator; import java.util.stream.Collectors; public class SsortingngStream { public static void main(Ssortingng[] args) { sortSsortingngs(); […]

Obtenir le dernier élément non nul de la liste en utilisant Java 8

En Java 7, si je veux obtenir le dernier élément non nul d’une liste, j’écris quelque chose comme ceci: public CustomObject getLastObject(List list) { for (int index = list.size() – 1; index > 0; index–) { if (list.get(index) != null) { return list.get(index); } } // handling of case when all elements are null // […]

Exemples de mapToInt et toIntFunction Java 8

Je teste la nouvelle mise à jour majeure de Java AKA Java 8 est très intéressant. J’utilise des stream en particulier, j’utilise ce code simple. private void getAvg() { final ArrayListpersons = new ArrayList (Arrays.asList(new MyPerson(“Ringo”,”Starr”),new MyPerson(“John”,”Lennon”),new MyPerson(“Paul”,”Mccartney”),new MyPerson(“George”,”Harrison”))); final OptionalDouble average = persons.stream().filter(p->p.age>=40).mapToInt(p->p.age).average(); average.ifPresent(System.out::println); return; } private class MyPerson { private final Random random […]

La capture des exceptions dans ‘stream ()’ ou ‘parallelStream ()’ perd les valeurs correctes

Dans le code suivant, lors de l’ NumberFormatException , les chaînes du strList approprié apparaissant dans strList avant la première strList incorrecte (c.-à-d. “illegal_3” ) ont été analysées avec succès (c.-à- “illegal_3” “1” et “2” ont été analysés. sous forme de nombres entiers 1 et 2 ). public void testCaughtRuntimeExceptionOutOfIteration() { List strList = Stream.of(“1”, […]

XXXSummaryStatistics nouveau constructeur en java-10

Je vois que java-10 ajoute un constructeur pour IntSummaryStatistics ( LongSummaryStatistics et DoubleSummaryStatistics ) qui prend 4 parameters qui sont count , min , max et sum . Je comprends pourquoi le constructeur no-args existe, de sorte qu’il serait utilisé en réduction, comme: ..stream().collect(Collectors.summarizingInt(Class::someFunction)) Cela a du sens, mais pourquoi est-il nécessaire d’append le constructeur […]

Comptage de caractères spécifiques dans un tableau à deux dimensions à l’aide d’un stream

Je voudrais compter les occurrences d’un caractère (par exemple l’espace: ‘ ‘ ) dans un tableau 2D, en utilisant stream. J’essayais de trouver une solution. Voici mon code, utilisant une boucle nestede: public int countFreeSpaces() { int freeSpaces = 0; for (int i = 0; i < height; i++) { for (int j = 0; […]