Skip to content

Instantly share code, notes, and snippets.

@andych008
Last active April 15, 2016 07:43
Show Gist options
  • Save andych008/c0e23ca78de45a96a4e2f30e5d0f3d56 to your computer and use it in GitHub Desktop.
Save andych008/c0e23ca78de45a96a4e2f30e5d0f3d56 to your computer and use it in GitHub Desktop.
getTopX
public static class MyData{
public int code;
public String name;
public MyData(int code, String name) {
this.code = code;
this.name = name;
}
@Override
public String toString() {
return code + name;
}
}
public Observable<List<MyData>> getTop(final int top) {
List<MyData> list = new ArrayList<>();
list.add(new MyData(2, "A"));
list.add(new MyData(3, "B"));
list.add(new MyData(2, "B"));
list.add(new MyData(1, "A"));
list.add(new MyData(1, "B"));
list.add(new MyData(3, "A"));
//如果top=2,希望返回的数据只有code=2和3,怎么搞?
return Observable.from(list)
.groupBy(new Func1<MyData, Integer>() {
@Override
public Integer call(MyData myData) {
return myData.code;
}
}).toSortedList(new Func2<GroupedObservable<Integer, MyData>, GroupedObservable<Integer, MyData>, Integer>() {
@Override
public Integer call(GroupedObservable<Integer, MyData> integerMyDataGroupedObservable, GroupedObservable<Integer, MyData> integerMyDataGroupedObservable2) {
return integerMyDataGroupedObservable.getKey() - integerMyDataGroupedObservable2.getKey();
}
}).map(new Func1<List<GroupedObservable<Integer, MyData>>, List<GroupedObservable<Integer, MyData>>>() {
@Override
public List<GroupedObservable<Integer, MyData>> call(List<GroupedObservable<Integer, MyData>> groupedObservables) {
int size = groupedObservables.size();
return size >= top ? groupedObservables.subList(size - top, size) : groupedObservables;
}
}).flatMap(new Func1<List<GroupedObservable<Integer, MyData>>, Observable<GroupedObservable<Integer, MyData>>>() {
@Override
public Observable<GroupedObservable<Integer, MyData>> call(List<GroupedObservable<Integer, MyData>> groupedObservables) {
return Observable.from(groupedObservables);
}
}).flatMap(new Func1<GroupedObservable<Integer, MyData>, Observable<MyData>>() {
@Override
public Observable<MyData> call(GroupedObservable<Integer, MyData> integerMyDataGroupedObservable) {
return integerMyDataGroupedObservable.asObservable();
}
}).toList();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment