I'm trying to remove all keys that have the same value. All other instances of myMap.Remove(k) in my program work but this one with the FOR loop gets a crash on the first item it tries to remove. I believe this is related to the FOR loop but I could be wrong. The IF statement is well executed. It just crashes on the first loop when k = "Key1". I don't get it.
This is the error log:
B4X:
Dim myMap As Map = CreateMap("Key1": "1", "Key2": "1")
For Each k In myMap.Keys
If (myMap.Get(k) = "1") Then
myMap.Remove(k)
End If
Next
This is the error log:
B4X:
Error occurred on line: 98 (MapTest)
java.util.NoSuchElementException
at java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:759)
at java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:790)
at java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:788)
at anywheresoftware.b4a.objects.collections.Map$MyMap.getEntry(Map.java:216)
at anywheresoftware.b4a.objects.collections.Map$MyMap.getKey(Map.java:196)
at anywheresoftware.b4a.objects.collections.Map.GetKeyAt(Map.java:93)
at anywheresoftware.b4a.objects.collections.Map$1.Get(Map.java:136)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:348)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144)
at anywheresoftware.b4a.BA$2.run(BA.java:387)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6702)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)