FastMap.values を反復処理する必要があります。私の問題は、基本的なループが NullPointerException で失敗することです
基本ループ
Collection<Order> orders = myObject.getOpenOrders();
for (Order order : orders) {
}
問題は、システム内の別のスレッドが fastmap を編集し、それに要素を追加および削除していて、NullPointerException が発生することです。まれですが、解決する必要があります。
だから私はヌルチェックを追加しました
Collection<Order> orders = myObject.getOpenOrders();
for (Order order : orders) {
if (order != null )
}
それでも NullPointerExcetion を取得するので、次のように繰り返してみました
FastMap<String, Order> openOrders = myObject.getOpenOrdersMap();
for (FastMap.Entry<String, Order> e = openOrders.head(), end = openOrders.tail(); (e = e.getNext()) != end && e != null;) {
Order order = e.getValue();
}
ただし、NullPointerExcetion をスローする代わりに、null になるとループが停止します。すべての要素を反復する必要があるため、これも問題です。
問題は for 反復が values() を使用し、実際にはリストへのポインターであることだと思います。リストをコピーしようとしましたが、コピー プロセスで NullPointerExcetion も取得します。任意の提案
ところで:デザイン全体を変更することが最善の解決策であり、すべての挿入と読み取りでロックを使用することを知っています。しかし、私の問題を解決するためにできる小さな変更はありますか?
何か案が?