私はソケット接続に接続するアプリを持っており、その接続は私に多くの情報を送信します..1秒あたり300注文(おそらくそれ以上)としましょう..クラスがあります(リスナーのようなもので、イベントに反応し、そのイベントには順序があります)その順序を受け取ります..オブジェクトを作成し、それをObservableList(tableViewのソース)に追加します..そのように私のGUIはその順序を示します。しかし、ここで問題が発生します.その注文がすでにobservableListに存在する場合..追加できません..そして更新する必要があります..しかし、時々..いくつかの注文ではこの条件が機能しません注文が再び追加されます。
いくつかのコードでどのように機能するかをお見せします。
public class ReceivedOrderListener
{
ev = Event; //Supose that this is the event with the order
if(!Repository.ordersIdMap.containsKey(ev.orderID))
{
Platform.runLater(new Runnable()
{
@Override public void run()
{
Repository.ordersCollection.add(ev.orderVo);
}
}
});
Repository.ordersIdMap.put(ev.orderID, ev.orderVo);
}
わかりました..これは私のコードの履歴書です。ev は注文のすべての情報を含む私のイベントです。orderID は、注文が既に存在するかどうかを確認するために使用するキーです (そして、そうです)。「リポジトリ」はシングルトン クラス、「ordersCollection」は ObservableList、「ordersIdMap」は HashMap です。