


Une explication approfondie des techniques de RxJava_04 [opération de filtrage de transmission de données]
Mar 04, 2017 am 09:49 AMCe tutoriel est basé sur RxJava1 >Lorsque l'observateur envoie des données à l'observateur, les données peuvent devoir être filtrées davantage pendant la transmission des données. Le didacticiel suivant couvre les fonctions de la plupart des opérations de filtrage.
Distinct - supprime les données en double envoyées
- Filtre - filtre les données spécifiques en fonction des conditions
- First - Obtenez les premières données de la file d'attente d'envoi
- Last - Obtenez les dernières données de la file d'attente d'envoi
- ElementAt - Selon l'index Envoyer des données spécifiques dans la file d'attente
- Take - Récupérer les n premiers éléments de données de la file d'attente
- TakeLast - Récupérer les n derniers éléments de données dans la file d'attente
- Sample - Envoyer en envoyant un échantillon de temps en fonction des données envoyées
- IgnoreElements - Ignorer la file d'attente des données envoyées
- 1.Distinct
Il y a maintenant une classe et les informations sur les étudiants ont été saisies dans le système étudiant. Il s’est avéré que les mêmes données étaient répétées. La file d'attente des données des étudiants est la suivante?:
Le résultat est le suivant?:
private ArrayList<Student> initPersons() { ArrayList<Student> persons = new ArrayList<>(); persons.add(new Student("張三", 16)); persons.add(new Student("李四", 17)); persons.add(new Student("王二麻子", 18)); persons.add(new Student("張三", 22)); return persons; }
2.Filtre
Observable .from(initPersons()) //過濾重復名字的項 .distinct(new Func1<Student, String>() { @Override public String call(Student student) { return student.name; } }) .subscribe(new Action1<Student>() { @Override public void call(Student student) { Log.i(TAG, "call: "+student); } });En plus de filtrer les parties répétées des données transmises , vous pouvez également utiliser le filtre Effacer des données spécifiques en fonction de règles. Les données envoyées par le code suivant sont 12345. La règle de filtrage est que la barre de données doit être inférieure à 4. L'exemple de code est le suivant?:
IT520: call: Student{name='張三', age=16} IT520: call: Student{name='李四', age=17} IT520: call: Student{name='王二麻子', age=18}Sortie
3 .Premier
Observable.just(1, 2, 3, 4, 5) .filter(new Func1<Integer, Boolean>() { @Override public Boolean call(Integer item) { return( item < 4 ); } }) .subscribe(new Subscriber<Integer>() { @Override public void onNext(Integer item) { System.out.println("Next: " + item); } @Override public void onError(Throwable error) { System.err.println("Error: " + error.getMessage()); } @Override public void onCompleted() { System.out.println("Sequence complete."); } });Appelez cette fonction pour que la file d'attente des données envoyées envoie uniquement le premier élément. Exemple de code
Next: 1 Next: 2 Next: 3 Sequence complete.SortieDes fonctions similaires incluent firstOrDefault(), qui est envoyée dans la file d'attente si la file d'attente est null , qui Autrement dit, si le premier élément n'est pas trouvé, une valeur par défaut sera envoyée.
Observable.just(1, 2, 3) .first() .subscribe(new Subscriber<Integer>() { @Override public void onNext(Integer item) { System.out.println("Next: " + item); } @Override public void onError(Throwable error) { System.err.println("Error: " + error.getMessage()); } @Override public void onCompleted() { System.out.println("Sequence complete."); } });4.Last
Next: 1 Sequence complete.
Appelez cette fonction pour envoyer uniquement le dernier élément de la file d'attente des données envoyées. Exemple de code
SortieLes fonctions similaires incluent lastOrDefault(T)Observable.just(1, 2, 3) .last() .subscribe(new Subscriber<Integer>() { @Override public void onNext(Integer item) { System.out.println("Next: " + item); } @Override public void onError(Throwable error) { System.err.println("Error: " + error.getMessage()); } @Override public void onCompleted() { System.out.println("Sequence complete."); } });5.
Next: 3 Sequence complete.
L'opérateur ElementAt obtient l'élément de données à la position d'index spécifiée de la séquence de données émise par l'observable d'origine, puis l'émet comme ses propres données uniques. Si vous transmettez un nombre négatif ou si le nombre d'éléments de données dans l'observable d'origine est inférieur à l'index 1, une IndexOutOfBoundsException sera levée.
L'exemple de code est le suivant?:
Sortie6.Take
Observable.just(1, 2, 3, 4, 1, 4) .elementAt(3) .subscribe(new Action1<Integer>() { @Override public void call(Integer value) { Log.i(TAG, "call: " + value); } });L'utilisation de l'opérateur Take permet de modifier le comportement de l'Observable, seuls les N premiers éléments de données sont renvoyés, puis la notification d'achèvement est émise et les données restantes sont ignorées. Exemple de code
com.m520it.rxjava I/IT520: call: 4Sortie
7.TakeLast
Observable.just(1, 2, 3, 4, 5, 6, 7, 8) .take(4) .subscribe(new Subscriber<Integer>() { @Override public void onNext(Integer item) { System.out.println("Next: " + item); } @Override public void onError(Throwable error) { System.err.println("Error: " + error.getMessage()); } @Override public void onCompleted() { System.out.println("Sequence complete."); } });Utilisez l'opérateur TakeLast pour modifier l'observable d'origine, vous pouvez simplement émettre l'Observable' Les N dernières données transmises sont ignorées. Les données précédentes sont ignorées. Exemple de code
Next: 1 Next: 2 Next: 3 Next: 4 Sequence complete.Sortie
8.Sample
Observable.just(1, 2, 3, 4, 5, 6, 7, 8) .takeLast(4) .subscribe(new Subscriber<Integer>() { @Override public void onNext(Integer item) { System.out.println("Next: " + item); } @Override public void onError(Throwable error) { System.err.println("Error: " + error.getMessage()); } @Override public void onCompleted() { System.out.println("Sequence complete."); } });échantillonnez les données envoyées à une certaine fréquence
Next: 5 Next: 6 Next: 7 Next: 8 Sequence complete.Le code ci-dessus s'imprime?: 0, 2, 4, 6, 8. . . . 9.IgnoreElementsSi vous ne vous souciez pas des données émises par un observable, mais souhaitez être averti lorsqu'il se termine ou se termine par une erreur, vous pouvez utiliser l'opérateur ignoreElements sur l'Observable, cela garantira que la méthode onNext() de l'observateur ne sera jamais appelée.
Observable .interval(1000, TimeUnit.MILLISECONDS)//每秒發(fā)送1個數(shù)字 .sample(2000,TimeUnit.MILLISECONDS)//每2秒采樣一次 .subscribe(new Action1<Long>() { @Override public void call(Long aLong) { Log.i(TAG, "call: "+aLong); } });Ce qui précède est une introduction approfondie aux techniques de RxJava_04 [opération de filtrage de transmission de données]. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (m.miracleart.cn)?!
Observable.just(1, 2, 3, 4, 1) .ignoreElements()//不發(fā)送任何信息 直接發(fā)送onCompleted() .subscribe(new Subscriber<Integer>() { @Override public void onCompleted() { Log.i(TAG, "onCompleted: "); } @Override public void onError(Throwable e) { } @Override public void onNext(Integer integer) { Log.i(TAG, "onNext: "+integer); } });

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'appel ReactAPI : Comment interagir avec et transférer des données vers l'API backend Présentation : Dans le développement Web moderne, interagir avec et transférer des données vers l'API backend est une exigence courante. React, en tant que framework frontal populaire, fournit des outils et fonctionnalités puissants pour simplifier ce processus. Cet article explique comment utiliser React pour appeler l'API backend, y compris les requêtes de base GET et POST, et fournit des exemples de code spécifiques. Installez les dépendances requises?: Tout d'abord, assurez-vous qu'Axi est installé dans le projet

Avec le développement de la science et de la technologie, la communication en réseau est devenue l’un des outils importants de transmission de l’information dans la société moderne. Mais dans le même temps, la transmission d’informations sur le réseau est confrontée à des risques d’attaques malveillantes et de vol, la sécurité est donc particulièrement importante. C’est sur cette base qu’est né le protocole HTTPS. Il s'agit d'un protocole qui ajoute le cryptage SSL/TLS au protocole HTTP pour assurer la sécurité de la transmission réseau. En tant que langage largement utilisé dans le développement de réseaux, Java fournit naturellement une API riche pour prendre en charge le protocole HTTPS. Cet article sera

Lorsque de nombreux amis changent de téléphone Apple, ils souhaitent importer toutes les données de l'ancien téléphone vers le nouveau téléphone. En théorie, c'est tout à fait réalisable, mais en pratique, il est impossible de ? transférer toutes ? les données. énumérez plusieurs fa?ons de ? transférer une partie des données ?. 1. iTunes est un logiciel préinstallé sur les téléphones mobiles Apple. Il peut être utilisé pour migrer toutes les données des anciens téléphones mobiles, mais il doit être utilisé conjointement avec un ordinateur. La migration peut être effectuée en installant iTunes sur l'ordinateur, puis en connectant le téléphone et l'ordinateur via un cable de données, en utilisant iTunes pour sauvegarder les applications et les données du téléphone, et enfin en restaurant la sauvegarde sur le nouveau téléphone Apple. 2. iCloudiCloud est l'outil ? espace cloud ? exclusif d'Apple. Vous pouvez d'abord vous connecter à votre ancien téléphone.

PHPtraitDTO : Un outil clé pour optimiser le processus de transfert de données, des exemples de code spécifiques sont requis Présentation : Dans le développement PHP, le transfert de données est une tache très courante, comme la transmission de données du contr?leur à la vue, la transmission de données de l'interface au front fin, etc Cependant, lors du processus de transmission des données, celles-ci doivent souvent être traitées, converties et encapsulées, ce qui peut entra?ner une redondance du code et des difficultés de maintenance. Pour résoudre ce problème, nous pouvons utiliser PHPtraitDTO (DataTransfer

PHPtraitDTO : Un outil clé pour optimiser le processus de transmission de données, des exemples de code spécifiques sont nécessaires Introduction : Au cours du processus de développement, la transmission de données est une exigence très courante, en particulier lorsque les données sont transférées entre différents niveaux. Lors du processus de transmission de ces données, nous devons souvent traiter, vérifier ou convertir les données pour répondre aux différents besoins de l'entreprise. Afin d'améliorer la lisibilité et la maintenabilité du code, nous pouvons utiliser PHPtraitDTO (DataTransferObject) pour optimiser

Java est un langage de programmation très populaire, particulièrement utilisé dans les applications Web et les applications mobiles. Lorsqu'ils sont confrontés à des exigences complexes de développement d'applications multithread, les développeurs rencontrent généralement de nombreux problèmes. RxJava est une bibliothèque très puissante qui fournit des modèles de programmation asynchrones et basés sur des événements basés sur le modèle d'observateur. Cet article explique comment utiliser RxJava pour le traitement asynchrone dans le développement JavaAPI. 1. Qu'est-ce que RxJava ? RxJava est une bibliothèque basée sur le modèle d'observateur

Développement Java?: comment utiliser RxJava pour la programmation réactive, des exemples de code spécifiques sont nécessaires. Introduction?: Avec les besoins croissants du développement de logiciels modernes, les méthodes de programmation traditionnelles ne peuvent plus répondre aux exigences de haute concurrence, de traitement asynchrone et de caractéristiques basées sur les événements. Afin de résoudre ces problèmes, la programmation réactive a vu le jour. En tant que puissante bibliothèque de programmation réactive, RxJava fournit des opérateurs riches et des méthodes de traitement asynchrone flexibles, ce qui améliore considérablement l'efficacité du développement et l'évolutivité des applications. Cet article explique comment utiliser RxJava pour

Introduction à la pratique des fonctions de contr?le des périphériques et de transmission de données du C++ dans le développement de systèmes embarqués : En tant que technologie avec un large éventail d'applications, les systèmes embarqués sont largement utilisés dans de nombreux domaines, tels que l'automobile, les appareils électroménagers, les équipements médicaux, etc. Dans le développement de systèmes embarqués, le contr?le des périphériques et la transmission de données constituent une fonction très importante. Cet article présentera comment utiliser le langage C++ pour implémenter les fonctions de contr?le et de transmission de données des périphériques et fournira des exemples de code pratiques. 1. Pratique de la fonction de contr?le des périphériques C++ Dans les systèmes embarqués, le contr?le des périphériques fait référence à la
