sql 中分组依据的 RxJava 替代方案
RxJava alternative of group by in sql
我有一个列表 Student
:
Observable<Student> source = Observable.fromIterable(getStudentList());
我想按邮政编码对它们进行分组,以及它们出现的次数,但问题是我使用 java 7
怎么做?
对组本身使用 groupBy
、flatMap
和 count
:
source.groupBy(s -> s.postalCode)
.flatMapSingle(g ->
g.count()
.map(v -> g.getKey() + ": " + v))
;
虽然没有 lambda,它看起来更丑陋:
source.groupBy(new Function<Student, String>() {
@Override public String apply(Student s) {
return s.postalCode;
}
})
.flatMapSingle(new Function<GroupedObservable<String, Student>, Single<String>>() {
@Override public String apply(final GroupedObservable<String, Student> group) {
return group.count().map(new Function<Long, String>() {
@Override public String apply(Long count) {
return group.getKey() + ": " + count;
}
});
}
});
我有一个列表 Student
:
Observable<Student> source = Observable.fromIterable(getStudentList());
我想按邮政编码对它们进行分组,以及它们出现的次数,但问题是我使用 java 7
怎么做?
对组本身使用 groupBy
、flatMap
和 count
:
source.groupBy(s -> s.postalCode)
.flatMapSingle(g ->
g.count()
.map(v -> g.getKey() + ": " + v))
;
虽然没有 lambda,它看起来更丑陋:
source.groupBy(new Function<Student, String>() {
@Override public String apply(Student s) {
return s.postalCode;
}
})
.flatMapSingle(new Function<GroupedObservable<String, Student>, Single<String>>() {
@Override public String apply(final GroupedObservable<String, Student> group) {
return group.count().map(new Function<Long, String>() {
@Override public String apply(Long count) {
return group.getKey() + ": " + count;
}
});
}
});