You must be updating the map in another thread while you are iterating through col. Both map#values and Collections.unmodifiableCollection return views of existing data structures, so what you are iterating over (and this is witnessed by your stacktrace) is the entry set of your map.