参考:
RxJava.zip()实现遍历List集合定时发射每条数据
demo:
import io.reactivex.Observable;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.BiFunction;
import io.reactivex.functions.Consumer;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;
/**
* RxJava.zip()实现遍历List集合定时发射每条数据
*/
public class Test2 {
public static void main(String[] args) {
timerItem();
}
private static void timerItem() {
ArrayList<Student> dataList = getDataList();
Observable<Student> itemObservable = Observable.fromIterable(dataList);
Observable<Long> timerObservable = Observable.interval(0, 1000, TimeUnit.MILLISECONDS);
Disposable disposable = Observable
.zip(itemObservable, timerObservable, new BiFunction<Student, Long, Student>() {
@Override
public Student apply(Student student, Long aLong) throws Exception {
return student;//
}
})
.doOnNext(new Consumer<Student>() {
@Override
public void accept(Student student) throws Exception {
System.out.println("doOnNext student============" + student.toString());
}
})
.subscribe(new Consumer<Student>() {
@Override
public void accept(Student student) throws Exception {
System.out.println("subscribe student============" + student.toString());
}
});
}
private static ArrayList<Student> getDataList() {
ArrayList<Student> students = new ArrayList<>();
students.add(new Student("1", 10));
students.add(new Student("1", 10));
students.add(new Student("2", 20));
students.add(new Student("2", 21));
students.add(new Student("2", 22));
students.add(new Student("3", 30));
students.add(new Student("4", 40));
students.add(new Student("5", 20));
students.add(new Student("6", 60));
students.add(new Student("6", 60));
students.add(new Student("7", 70));
return students;
}
public static class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
}