Добрый день, подскажите пожалуйста, никак не могу справиться с задачкой. Есть HashMap с данными, . По ней делаю перебор. Удаляю из нее элемент и естественно, у меня key с данным номером удален, и когда идет перебор далее, у меня NullPointer. Как можно удалить элемент, но так, чтобы key сместился? Я уже и копировал в другую и что только не делал, никак. Может у кого-то есть способ? или знаете как безболезненно удалять, я и через Iterator делал, все равно нет в итоге при повторном переборе этого key.
Последняя мысля была такая
HashMap<Integer, Wagon> copy = new HashMap<Integer, Wagon>(tempMapOfWagons);
for (Map.Entry<Integer, Wagon> pair: copy.entrySet()){
if (pair.getKey().equals(getKeyNumber))
System.out.println(getKeyNumber);
tempMapOfWagons.remove(getKeyNumber);
}
А так получаю ConcurrentEx
tempMapOfWagons.remove(getKeyNumber);
int i = 0;
for (HashMap.Entry<Integer, String> m : tempMapOfWagons.entrySet()) {
mapNewOfWagons.put(i, m.getValue());
i++;
}
При работе с итератором делал так, переписывал в новую мапу, смещая элементы
int i = 0;
for (Iterator<Map.Entry<Integer, Wagon>> iterator = tempMapOfWagons.entrySet().iterator(); iterator.hasNext(); ) {
Map.Entry<Integer, Wagon> e = iterator.next();
if (e.getKey().equals(getKeyNumber)) {
iterator.remove();
iterator.next();
} else {
mapNewOfWagons.put(i, e.getValue());
i++;
}
}
Вот вам пример удаления значения из Map
public static void main(String[] args) {
Map <Integer, String> pair = new HashMap<>();
pair.put(1, "one");
pair.put(2, "two");
pair.put(3, "three");
pair.put(4, "four");
pair.put(5, "five");
Iterator<Map.Entry<Integer, String>> iterator = pair.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<Integer, String> nextElement = iterator.next();
Integer key = nextElement.getKey();
String value = nextElement.getValue();
if (key==3) iterator.remove();
}
pair.forEach((k,v)->{System.out.println(k+" * " + v);});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, возникла проблема с тем, что я делаю war проект, и возникает проблема при запуске Tomcat с DriverManagergetConnection(
Есть класс RadioPlayer, который реализует класс для проигрывания и остановки плеераИспользуется ExoPlayer
Есть файл sampletxt во внешней памяти, у которого такая структура [Строка1, Строка2]