如下图所示,我正在学习如何使用rxjava。我想知道如何使用map操作符来显示每个列表中有多少个人对象。
问题是,当我运行代码时,从未调用observable的onNext。
注意:下面发布的person类包含可选属性。
请告诉我如何使用map操作符显示每个列表中有多少个人对象。
提前谢谢
密码
:
public class Main {
public static void main(String[] args) {
Observable<List<Person>> observables = Observable.create(e-> {
for(List<Person> p : Main.getPersons()) {
e.onNext(p);
}
e.onComplete();
});
observables
.map(p->p.size())
.observeOn(Schedulers.io())
.subscribe(new Observer() {
@Override
public void onComplete() {
// TODO Auto-generated method stub
System.out.println("onCompleted");
}
@Override
public void onError(Throwable arg0) {
// TODO Auto-generated method stub
}
@Override
public void onNext(Object arg0) {
// TODO Auto-generated method stub
System.out.println("onNextFromObserver: " + arg0);
}
@Override
public void onSubscribe(Disposable arg0) {
// TODO Auto-generated method stub
}
});
}
private static <T> Observable<T> toObservable(T s) {
return Observable.just(s);
}
private static List<List<Person>> getPersons() {
return Arrays.asList(
Arrays.asList(new Person("Sanna1", 59, "EGY"), new Person(null, 59, "EGY"), new Person("Sanna3", 59, null)),
Arrays.asList(new Person("Mohamed1", 59, "EGY"), new Person(null, 59, "EGY")),
Arrays.asList(new Person("Ahmed1", 44, "QTR"), new Person("Ahmed2", 44, "QTR"), new Person(null, null, "QTR")),
Arrays.asList(new Person("Fatma", 29, "KSA")),
Arrays.asList(new Person("Lobna", 24, "EGY")));
}
}
人
public class Person {
private String name = null;
private String address = null;
private int age;
private Optional<String> optName= null;
private Optional<Integer> optAge= null;
private Optional<String> optAddress = null;
public Person(String name, Integer age, String address) {
this.optName = Optional.ofNullable(name);
this.optAge = Optional.ofNullable(age);
this.optAddress = Optional.ofNullable(address);
}
public Optional<String> getName() {
return optName;
}
public void setName(String name) {
this.optName = Optional.ofNullable(name);
}
public Optional<String> getAddress() {
return this.optAddress;
}
public void setAddress(String address) {
this.optAddress = Optional.ofNullable(address);
}
public Optional<Integer> getAge() {
return this.optAge;
}
public void setAge(int age) {
this.optAge = Optional.ofNullable(age);
}
}