Проблема, насколько я понимаю, заключается в следующем: при HashMap
вы хотите
- Выберите произвольно выбранный ключ из числа ключей, которые в настоящее время связаны с
Map
;
- Удалить эту ассоциацию этого случайно выбранного ключа с карты; и
- Возвращает значение, которое до недавнего времени ассоциировалось с этим ключом
Вот пример того, как это сделать, вместе с небольшой тестовой / демонстрационной процедурой:
public class Main
{
private static <K, V> V removeRandomEntry(Map<K, V> map){
Set<K> keySet = map.keySet();
List<K> keyList = new ArrayList<>(keySet);
K keyToRemove = keyList.get((int)(Math.random()*keyList.size()));
return map.remove(keyToRemove);
}
public static void main(String[] args){
Map<String, String> map = new HashMap<>();
for(int i = 0; i < 100; ++i)
map.put("Key" + i, "Value"+i);
int pass = 0;
while (!map.isEmpty())
System.out.println("Pass " + (++pass) + ": Removed: " + removeRandomEntry(map));
}
}