2017-09-21 5 views
0

J'ai une liste d'objets et je veux le convertir en une liste de cartes qui ont une 2 clés.convertir Liste <Object> à la liste <Map> avec 2 clés en utilisant RxJava

exemple de code

// 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); 
} 

Ainsi, chaque objet (livre) doivent être converties en une carte qui détiennent un 2 clés.

Ma question est de savoir comment faire en utilisant RxJava

+0

Qu'avez-vous essayé jusqu'à présent? –

+0

@ LeonardBrünings Je suis confus lorsque je me concentre sur l'opérateur ** toMap ** dans RxJava qui retourne une carte qui ne contient qu'une seule clé et continue d'essayer d'atteindre le même résultat que le code de la question. –

Répondre

0

Vous souhaitez vous abonner à un Observable créé avec la méthode pratique fromIterable qui reçoit votre liste de livres, par la suite, il émettra les éléments un par un, puis chaque élément transformé en une carte et enfin les regrouper dans une liste en utilisant l'opérateur 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); 
     } 
    });