使用RxJava将List <object>转换为List <map>,其中包含2个键

时间:2017-09-21 22:01:11

标签: java collections hashmap rx-java2

我有一个对象列表,我想将其转换为具有2个键的地图列表。

代码示例

from django.db.models import Max

Event.objects.annotate(max_date=Max('order__event__date')) \
             .filter(date=F('max_date'))

因此每个对象(书)都必须转换为一个包含2个键的Map。

我的问题是如何使用RxJava

1 个答案:

答案 0 :(得分:0)

所以你想要订阅一个用fromIterable方便法创建的Observable,它接收你的书籍列表,之后它将逐个发出项目,然后每个项目转换成一个Map,最后将它们分组在使用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);
        }
    });