2017-11-21 18 views
3

mapconcatMapallを使用してオブジェクトを反復処理するさまざまな演算子を試しましたが、リストから要素を削除できません。ここでRxJava:リストから要素を削除

は、コードの一部です:

Observable.fromIterable(selectedJobs) 
      .observeOn(AndroidSchedulers.mainThread()) // Added this from one answer in SO. but still no resolution. 
      .all(homeJob -> { 

       if (!homeJob.isCanCloseJob()) { 
        selectedJobs.remove(homeJob); // <- this is what causing Exception 
        //toast message 
       } else { 
        //do something 
       } 

       return true; 
      }) 
      .subscribe(new SingleObserver<Boolean>() { 
       @Override 
       public void onSubscribe(Disposable disposable) { 

       } 

       @Override 
       public void onSuccess(Boolean aBoolean) { 

        baseRealm.executeTransaction(realm -> realm.copyToRealmOrUpdate(selectedJobs)); 

       } 

       @Override 
       public void onError(Throwable throwable) { 
        AppLogger.e(tag, throwable.getMessage()); 
       // throws Caused by: java.util.ConcurrentModificationException 
       } 
      }); 

私が欲しいのは、リストからオブジェクトを削除した後の状態をチェックすることです。

答えて

2

機能プログラミングでは、ストリームを操作しています。最初の入力から項目を削除する代わりに、ストリーム自体をフィルタリングし、フィルタリングされたリストをコンシューマに渡す必要があります。

これはあなたが探しているものであるように思える:

Observable.fromIterable(listOfElements) 
      .filter(element -> { 
       if (element.isValid()) { 
        // do some action with valid `element` 
        // NOTE: this action would be performed with each valid element 
        return true; 
       } else { 
        // `element` is not valid, perform appropriate action 
        // NOTE: this action would be performed for each invalid element 
        return false; 
       } 
      }) 
      .toList() // collect all the filtered elements into a List 
      .subscribe(
        filteredElements -> /* use `filteredElements` which is List<Element> */, 
        throwable -> /* perform appropriate action with this `throwable`*/) 
     ); 
+0

私はfilter'演算子 'と試みたが、私はすべてのフィルタオブジェクトを望んでいたし、それはあなたが戻ります' ToListメソッド() '関数でやっていることです'onSuccess'のフィルタリングされたリストありがとう。私はこの答えを受け入れています – Aks4125

関連する問題