Skip to content

Commit 9f7a618

Browse files
committed
Replaced for loops with while loops and iterators.
1 parent 1c8bef5 commit 9f7a618

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

lib/src/main/java/ua/naiksoftware/stomp/client/StompClient.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.Collections;
77
import java.util.HashMap;
88
import java.util.HashSet;
9+
import java.util.Iterator;
910
import java.util.List;
1011
import java.util.Map;
1112
import java.util.Set;
@@ -170,21 +171,22 @@ public Observable<StompMessage> topic(String destinationPath, List<StompHeader>
170171
subscribersSet.add(subscriber);
171172

172173
}).doOnUnsubscribe(() -> {
173-
Set<String> destSet = new HashSet<String>();
174-
for (String dest : mSubscribers.keySet()) {
175-
Set<Subscriber<? super StompMessage>> set = mSubscribers.get(dest);
176-
for (Subscriber<? super StompMessage> subscriber : set) {
174+
Iterator<String> mapIterator = mSubscribers.keySet().iterator();
175+
while (mapIterator.hasNext()) {
176+
String destinationUrl = mapIterator.next();
177+
Set<Subscriber<? super StompMessage>> set = mSubscribers.get(destinationUrl);
178+
Iterator<Subscriber<? super StompMessage>> setIterator = set.iterator();
179+
while (setIterator.hasNext()) {
180+
Subscriber<? super StompMessage> subscriber = setIterator.next();
177181
if (subscriber.isUnsubscribed()) {
178-
set.remove(subscriber);
182+
setIterator.remove();
179183
if (set.size() < 1) {
180-
destSet.add(dest);
181-
unsubscribePath(dest).subscribe();
184+
mapIterator.remove();
185+
unsubscribePath(destinationUrl).subscribe();
182186
}
183187
}
184188
}
185189
}
186-
for (String dest : destSet)
187-
mSubscribers.remove(dest);
188190
});
189191
}
190192

0 commit comments

Comments
 (0)