Sha*_*man 2 android rx-java rx-android
我正在尝试根据Rxjava中的某些条件创建组列表。
以下是我的回复:
{
"dates":[
{
"date":18,
"value":"1"
},
{
"date":18,
"value":"2"
},
{
"date":18,
"value":"3"
},
{
"date":19,
"value":"1"
},
{
"date":19,
"value":"2"
},
{
"date":19,
"value":"3"
},
{
"date":19,
"value":"4"
}
]
}
Run Code Online (Sandbox Code Playgroud)
如何使用Rxjava按值18 [值1,值2,值3,最高值= 3,最低值= 1]分组19 [值1,值2,值3,值4,最高值= 4,最低值= 1]
注意:我可以创建for循环,但是将从服务器获取响应,并且由于返回了使用rx java功能的可观察到的想法。
任何帮助将不胜感激。
谢谢Shanthi
考虑按组功能。
这是任何有好奇心的人的示例:
class DateModel implements Comparable<DateModel>{
Integer date;
Integer value;
public DateModel(int date, int value){
this.date = date;
this.value = value;
}
@Override
public int compareTo(DateModel o) {
return value.compareTo(o.value);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,如果我们必须汇总这些模型对象的列表:
// example list
List<DateModel> dateList = Arrays.asList(
new DateModel(18,1),
new DateModel(18,2),
new DateModel(18,3),
new DateModel(19,1),
new DateModel(19,2),
new DateModel(19,3),
new DateModel(19,4)
);
// the following observable will give you an emission for every grouping
// for the example data above, you should get two emissions (group 18 and 19)
Observable<PriorityQueue<DateModel>> observable =
Observable.from(dateList)
.groupBy(dateModel -> dateModel.date)
.flatMap(groups -> groups.collect(PriorityQueue::new, PriorityQueue::add));
Run Code Online (Sandbox Code Playgroud)
PriorityQueue只是用于收集的结构的一个示例。如果从队列中弹出,则会得到18-1、18-2、18-3等(按您要求的顺序)。您可以使用其他结构来仅查找最大值和最小值。
| 归档时间: |
|
| 查看次数: |
5793 次 |
| 最近记录: |