Извините, не знаю, как вкратце объяснить это в заголовке. Мне нужен класс java, в котором хранятся пары <object number, object>
, автоматически генерирующие добавочные числа. Если какой-либо элемент удален, его номер будет повторно использован для следующего сохраненного элемента. Вот так:
public class SerialStorage<T>
{
Map<Integer, T> itemsStorage;
Queue<Integer> deletedItemsStorage;
int lastKnownMaxNumber;
public SerialStorage()
{
itemsStorage = new HashMap<>();
deletedItemsStorage = new ArrayDeque<>();
lastKnownMaxNumber = 0;
}
/*
Stores new item and returns it's number
*/
public int putItem(T item)
{
int number;
if (deletedItemsStorage.size() > 0)
{
number = deletedItemsStorage.remove();
}
else
{
number = ++lastKnownMaxNumber;
}
itemsStorage.put(number, item);
return (number);
}
/*
Get item by it's number
*/
public T getItem(int number)
{
return (itemsStorage.get(number));
}
/*
Removes item and returns it. Returns null if no such item found
*/
public T removeItem(int number)
{
T removedItem = itemsStorage.get(number);
if (removedItem != null)
{
deletedItemsStorage.add(number);
}
return (removedItem);
}
}
Есть ли что-нибудь подобное в стандартных java библиотеках?