Необходимо в HashMap
сохранить "ключ -> массив значений".
Map<Integer, List<Data>> myMap = new HashMap();
Если записи с таким номером нет, то заполняем myMap
:
if (!myMap.containsKey(pos)) {
List<Data> dataArray = new ArrayList();
dataArray.add(new Data(a, b, c, d));
myMap.put(pos, dataArray);
}
Далее идет снова проверка на существование, и если ключ есть, то выводим значение:
if (myMap.containsKey(pos))
myMap.get(pos)
Проблема в том, что если при первой проверке ключа нет, то заполняется, однако второе условие тоже срабатывает. Но если заново вызвать функцию, содержащую эти проверки, то для pos
, который, по идее, уже есть в Map
, containsKey
говорит, что якобы записи с ключом pos
еще нет, и начинает заново заполнять Map
. Но на самом деле такой ключ в Map
уже есть. Как это исправить?
P.S. После добавления в Map
containsKey
показывает, что запись есть. Map
у меня глобальный. И если вызвать containsKey
в другом участке кода, то containsKey
уже вернет false
при том, что запись есть. Почему так, и как это исправить?
У себя для похожей цели использую такой метод.
/**
* @param checkMap мапа, куда необходимо добавить инфу
* @param key ключ для мапы выше, по которому ищем значения
* @param value значение, которое необходимо добавить
* @param isSet если true коллекция инициализируется как HashSet, иначе как ArrayList
* @param <K> Тип ключа
* @param <V> Тип значения
* @return true если в мапе был данный ключ
*/
public static <K, V> boolean addToGroupMap(Map<K, Collection<V>> checkMap, K key, V value, boolean isSet) {
assert checkMap != null;
boolean result = false;
Collection<V> vList = checkMap.get(key);
if (vList == null) {
vList = isSet ? new HashSet<V>() : new ArrayList<V>();
vList.add(value);
checkMap.put(key, vList);
} else {
vList.add(value);
result = true;
}
return result;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите наиболее простую, надежную и наиболее "синхронную" схему взаимодействия Компонента с GUI и ServiceВ ИНЕТЕ описано много схем, но, как...
Я создал простую JsonRPC server (Netty socketServer) для выполнения определенных задач, общих для нашей команды, но вызывающиеся из разных сетейСервер получает...