Я программирую на Java, но я также мог бы принять C ++ (или даже псевдо) код, без проблем. Вот что я нахожусь:
У меня есть что-то вроде плейлиста, например List<MyPlayListItem> lsMyPlaylist
. Теперь я хочу дать пользователю возможность перетасовать элементы, а затем вернуться к упорядоченному списку. Я имею в виду, скажем, пользователь находится в «режиме случайного воспроизведения», например, игрок. переходит от песни 7 к 5, но затем пользователь отключает «режим случайного воспроизведения», потому что он хочет услышать песню 6 дальше. Как бы вы подошли к этой проблеме?
У меня есть несколько идей:
- для использования двух списков, один оригинал, один перетасованный (слишком много памяти)
- есть список целых чисел, которые я перетасовываю, а затем использую в качестве индекса для получения элементов (возможно, немного лучше)
- использовать хеш-таблицу (решение? Мне может понадобиться совет по этому поводу)
О, и это не домашнее задание (хотелось бы, чтобы я снова был в этом возрасте :-D).
EDIT:
Я только что закончил реализацию, как это:
PlayList<E> implements List {
private List<E> lsObjs = null;
private List<Integer> lsIdxs = null;
boolean bShuffleMode = false;
int Pos = 0;
}
Однако сейчас я думаю о чем-то вроде:
PlayListItem<E> {
int iNextItem = 0;
}
PlayList<PlayListItem> implements List {
private List<PlayListItem> lsObjs = null;
boolean bShuffleMode = false;
int Pos = 0;
}
Не уверен насчет этого ... Возможно, все еще нужен совет. Могу ли я реализовать Список, если я укажу объекты в списке? Хм ...