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.