2017-09-21 10 views
0

私はオブジェクトのリストを持っており、それを2つのキーを持つマップのリストに変換したいと思います。リストを<Object>にリスト<Map> RxJavaを使用して2つのキー

コード例

// list of books (objects) 
List<Book> books = new ArrayList<>(); 
books.add(new Book(1, 6)); 
books.add(new Book(2, 2)); 
books.add(new Book(3, 9)); 
books.add(new Book(4, 18)); 

List<Map<String, Object>> booksMap = Collections.emptyList(); 

// convert list into list of maps using regular for-loop 
// map structure with 2 keys 
for (Book book : books) { 
    Map<String, Object> map = new HashMap<>(); 
    map.put("id", book.getId()); 
    map.put("quantity", book.getQuantity()); 

    booksMap.add(map); 
} 

したがって、各オブジェクト(ブック)が2つのキーを保持するマップに変換されなければなりません。

私の質問は、その後、それは一つ一つのアイテム放出するRxJava

+0

これまでに何を試みましたか? –

+0

@LeonardBrünings私はRxJavaの** toMap **演算子に焦点を当てると混乱しました。これは、1つのキーだけを保持し、問題のコードと同じ結果に到達しようとしているMapを返します。 –

答えて

0

だから、あなたの本のリストを受け取り、fromIterable便利な方法で作成した観察可能に加入したい使用してそれを行う方法でありますすべての項目がマップに変換され、最後にtoList演算子を使用してリストにまとめられます。

Observable.fromIterable(books) 
    .map(new Function<Book, Map<String, Object>>() { 
     @Override 
     public Map<String, Object> apply(Book book) throws Exception { 
      Map<String, Object> map = new HashMap<String, Object>(); 
      map.put("id", book.id); 
      map.put("quantity", book.quantity); 
      return map; 
     } 
    }) 
    .toList() 
    .subscribe(new Consumer<List<Map<String, Object>>>() { 
     @Override 
     public void accept(List<Map<String, Object>> mapsList) throws Exception { 
      System.out.println(mapsList); 
     } 
    }); 
関連する問題