<dependencies>
<dependency>
<groupId>org.reactfx</groupId>
<artifactId>reactfx</artifactId>
<version>1.0-M5</version>
</dependency>
</dependencies>
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import org.reactfx.EventStreams;
public class ReactiveCollectionExample {
public static void main(String[] args) {
ObservableList<Integer> numbers = FXCollections.observableArrayList();
EventStreams.changesOf(numbers)
.subscribe(change -> {
System.out.println("List changed: " + change.getAddedSubList());
});
numbers.addAll(1, 2, 3, 4, 5);
}
}
EventStreams.changesOf(numbers)
.filter(change -> change.getAddedSubList().size() > 2)
.subscribe(change -> {
System.out.println("List changed: " + change.getAddedSubList());
});
EventStreams.changesOf(numbers)
.map(change -> change.getAddedSubList().stream().mapToInt(Integer::intValue).sum())
.subscribe(sum -> {
System.out.println("Sum of list elements: " + sum);
});
ObservableList<String> names = FXCollections.observableArrayList();
EventStreams.changesOf(numbers)
.combine(EventStreams.changesOf(names), (numChange, nameChange) ->
"List changed: " + numChange.getAddedSubList() + ", Names changed: " + nameChange.getAddedSubList())
.subscribe(change -> {
System.out.println(change);
});