一、描述
toMap 可以把所有数据收集起来 转成一个map;
二、示意图
二、示例代码
这个方法 可以设置你想要 map中的key 和map的value是什么类型和值 ,可以还可以追加map的数量
List<StudentToMultiMap> mapList = new ArrayList<>();
StudentToMultiMap stu1 = new StudentToMultiMap(1001, "ZhangSan");
StudentToMultiMap stu2 = new StudentToMultiMap(1002, "LiSi");
mapList.add(stu1);
mapList.add(stu2);
Observable.just(stu1).toMap(new Func1<StudentToMultiMap, String>() {
@Override
public String call(StudentToMultiMap molKey) {
return molKey.getId()+"";
}
}, new Func1<StudentToMultiMap, String>() {
@Override
public String call(StudentToMultiMap mapValue) {
return mapValue.getName();
}
}, new Func0<Map<String, String>>() {
@Override
public Map<String, String> call() {
Map<String, String> stringMap =new HashMap<String, String>();
stringMap.put("1","2");//key 会覆盖
stringMap.put("2","3");
stringMap.put("1","4");
return stringMap;
}
}).subscribe(new Action1<Map<String, String>>() {
@Override
public void call(Map<String, String> map) {
LogUtils.e(TAG,"RxAgain.call."+map.toString());
LogUtils.e(TAG,"RxAgain.call."+map.size());
}
});
f
四、运行结果
{1001=ZhangSan, 1=2}
{1001=ZhangSan, 1=4, 2=3}
3 个
示例代码 :
value 是一个对象 ,我们可以随意指定类型
List<StudentMol> mapList = new ArrayList<>();
StudentMol stu1 = new StudentMol(1001, "ZhangSan");
final StudentMol stu2 = new StudentMol(1002, "LiSi");
mapList.add(stu1);
mapList.add(stu2);
Observable.from(mapList).toMap(new Func1<StudentMol, String>() {
@Override
public String call(StudentMol molKey) {
return molKey.getId() + "";
}
}, new Func1<StudentMol, StudentMol>() {
@Override
public StudentMol call(StudentMol studentMolVlaue) {
//这里会循环过来
if (studentMolVlaue.id == 1002) {
studentMolVlaue.name="张三";
} else if (studentMolVlaue.id == 1001) {
studentMolVlaue.name="李四";
}
return studentMolVlaue;
}
}, new Func0<Map<String, StudentMol>>() {
@Override
public Map<String, StudentMol> call() {
Map<String, StudentMol> hashMap = new HashMap<String, StudentMol>();
StudentMol stu3 = new StudentMol(1001, "小刘");
hashMap.put("1003",stu3);
return hashMap;
}
}).subscribe(new Action1<Map<String, StudentMol>>() {
@Override
public void call(Map<String, StudentMol> map) {
LogUtils.e(TAG, "RxAgain.call." + map.toString());
LogUtils.e(TAG, "RxAgain.call." + map.size());
}
});
运行结果 :
{1001=Student{id=1001, name='李四'}, 1003=Student{id=1001, name='小刘'}, 1002=Student{id=1002, name='张三'}}
数量 3个