Je suis suite à quelques tutoriels sur java flux code> et il semble que tous ces tutoriels sont déjà obsolètes (ou évidemment, je ne l'obtiens pas) Expected 3 arguments but found 1
3 Réponses :
Vous pouvez travailler avec le type d'integer arrayes.stream (nouveau int [] {1,2,3,4,5,6}) code> crée un intestream code>, qui n'a pas de Collectez CODE> Méthode Prenant un seul paramètre ( Collecter CODE> Méthode de IntStream code> a la signature - tolist () code> ne serait pas applicable, car Java n'autorise pas list code> doivent être de type de référence. entier code> à la place: P> var array = Arrays.stream(new int[] {1,2,3,4,5,6})
.filter(x -> x > 3)
.toArray();
Pouvez-vous parler un peu de la différence entre new Integer [] et new int []? Je viens d'un monde C # et je ne comprends pas pourquoi cela fonctionne maintenant
@Loading J'ai corrigé et développé ma réponse. Faites-moi savoir si quelque chose n'est pas clair.
J'ai supprimé ma réponse, car vous avez posté beaucoup plus rapidement.
Arrays.stream (new int [] {1,2,3,4,5,6}) renverra un IntStream , pas un normal Flux .
Vous pouvez le convertir en Stream avec .boxed():
var list = Arrays.stream(new int[] {1,2,3,4,5,6})
.filter(x -> x > 3)
.boxed()
.collect(toList());
Jetez un œil à ceci: À propos de collect (fournisseur, accumulateur, combinateur)
et cela résoudra votre problème :
ArrayList<Object> collect = Arrays.stream(new int[] { 1, 2, 3, 4, 5, 6 }).filter(x -> x > 3)
.collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
collect ici prend trois paramètres Fournisseur, BiConsumer, BiConsumer Vous n'en donniez qu'un, c'est pourquoi l'exception. J'espère que ça aide :)
Cette collecte a les paramètres Supplier, ObjIntConsumer, BiConsumer .
quelle version de java utilisez-vous pour la compilation?
Un peu de débogage aurait pu vous aider, mais comme vous l'avez dit, vous venez de fond c #, tout va bien.