Inversion des flux Java 8
Dans Java 8, les flux fournissent un moyen puissant et concis de manipuler et de traiter les données. Une opération commune consiste à inverser un flux. Cet article explore deux méthodes pour y parvenir: une solution spécifique pour inverser un intstream et une approche générique pour inverser tout flux d'objets. Intstream, une méthode personnalisée peut être créée pour cartographier la plage de valeurs dans l'ordre inverse. Par exemple, si nous avons un Intstream allant de -5 à 0, l'inversion entraînerait le flux 0 à -5. Cela peut être réalisé en utilisant le code suivant:
static IntStream RevRange (int from, int to) { return IntStream.Range (de, à) .map (i -> à - i de - 1); } Cette méthode évite la boxe et le tri, résultant en une solution plus efficace.
Réversement de flux générique
static IntStream revRange(int from, int to) { return IntStream.range(from, to) .map(i -> to - i from - 1); }
pour réinverser les flux de tout type d'objet, Deux approches peuvent être utilisées. Le premier consiste à stocker les éléments de flux dans un tableau et à les lire dans l'ordre inverse:
@ suppresswarnings ("non coché")
STATIC
Une autre technique consiste à utiliser des collectionneurs pour accumuler les éléments dans une liste inversée:
@SuppressWarnings("unchecked") staticStream reverse(Stream input) { Object[] temp = input.toArray(); return (Stream ) IntStream.range(0, temp.length) .mapToObj(i -> temp[temp.length - i - 1]); }
Cette option nécessite également de stocker les éléments de flux, mais il élimine le besoin de copie en utilisant une liste Array avec une insertion à l'avant.
Il convient de noter qu'il n'y a pas de moyen "approprié" d'inverser un flux sans stocker les éléments. Cependant, les méthodes présentées fournissent des solutions efficaces et polyvalentes pour une inversion inttrestream spécifique et une inversion de flux générique.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3