Last active
April 15, 2016 07:43
-
-
Save andych008/c0e23ca78de45a96a4e2f30e5d0f3d56 to your computer and use it in GitHub Desktop.
getTopX
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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