在Java中,有几种不同类型的ObservableCollections集合可用于实现观察者模式。下面是一些示例代码:
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
ObservableList list = FXCollections.observableArrayList();
list.add("Item 1");
list.add("Item 2");
list.add("Item 3");
list.addListener((ObservableList.Change extends String> c) -> {
while (c.next()) {
if (c.wasAdded()) {
System.out.println("Added: " + c.getAddedSubList());
}
if (c.wasRemoved()) {
System.out.println("Removed: " + c.getRemoved());
}
if (c.wasUpdated()) {
System.out.println("Updated: " + c.getList().subList(c.getFrom(), c.getTo()));
}
}
});
list.add("Item 4");
list.remove(1);
list.set(0, "Item 1 updated");
import javafx.collections.FXCollections;
import javafx.collections.ObservableSet;
ObservableSet set = FXCollections.observableSet();
set.add("Item 1");
set.add("Item 2");
set.add("Item 3");
set.addListener((ObservableSet.Change extends String> c) -> {
if (c.wasAdded()) {
System.out.println("Added: " + c.getElementAdded());
}
if (c.wasRemoved()) {
System.out.println("Removed: " + c.getElementRemoved());
}
});
set.add("Item 4");
set.remove("Item 2");
import javafx.collections.FXCollections;
import javafx.collections.ObservableMap;
ObservableMap map = FXCollections.observableHashMap();
map.put("Item 1", 1);
map.put("Item 2", 2);
map.put("Item 3", 3);
map.addListener((ObservableMap.Change extends String, ? extends Integer> c) -> {
if (c.wasAdded()) {
System.out.println("Added: " + c.getKey() + " = " + c.getValueAdded());
}
if (c.wasRemoved()) {
System.out.println("Removed: " + c.getKey() + " = " + c.getValueRemoved());
}
});
map.put("Item 4", 4);
map.remove("Item 2");
这些ObservableCollections集合可以用于在应用程序中实现观察者模式,以便在集合发生变化时通知观察者进行相应的更新操作。