【问题标题】:HashMap observer Java which is going to detect the insertHashMap 观察者 Java,它将检测插入
【发布时间】:2017-08-07 20:00:05
【问题描述】:

有人可以帮助我创建一个程序,该程序将观察任何 put 或 add 的 hashmap,并在将任何项目放入其中后返回添加的 key(value)。 一旦观察者检测到 put ,我就会得到对另一种方法的响应,我将对响应对象执行一些处理。

我期待对 JAVA 中的 Observer 提出建议。

【问题讨论】:

  • 您可以使用decorator 添加允许观察者的代码。或者使用一些 AOP 库来为你做装饰(虽然我怀疑现在使用这些可能有点超出范围)。

标签: java hashmap observer-pattern


【解决方案1】:

考虑查看 JavaFX 属性:http://docs.oracle.com/javafx/2/binding/jfxpub-binding.htm

在您的情况下,使用ObservableMap 将非常适合。这是一个装饰器,它允许跟踪地图中的变化:https://docs.oracle.com/javase/8/javafx/api/javafx/collections/ObservableMap.html

所以在你的情况下:

// yourMap is the map that has to be observed
ObservableMap<Key, Value> observableMap = FXCollections.observableMap(yourMap);

然后您可以将侦听器附加到observableMap

observableMap.addListener(new MapChangeListener<SensorType, Node>()
        {
            @Override
            public void onChanged(Change<? extends Key, ? extends Value> change)
            {
                // your code here
            }
        });

或者,使用 lambda:

observableMap.addListener(
(MapChangeListener.Change<? extends Key, ? extends Value> change) ->
                {
                    // your code here
                });

Key和Value是占位符,应该是你自己map的key和value类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多