У меня огромный список.Я могу добавить / переставить / удалить элементы из этого списка.Поскольку список действительно содержит ошибки, я не хочу хранить снимок всего списка где-либо в системе.Вместо этого я поддерживаю XML-файл, чтобы отслеживать элементы, которые добавляются / перемещаются.
Каждый элемент связан с index and change order
.
Def- Change order:
порядком, в котором элемент добавляется / перемещается.
Def- Index:
индекс, по которому элемент добавляется / перемещается.
Так что теперь, когда мне нужно будет отобразить список, у меня будет свой исходный список и XML-файл.Я буду использовать XML-файлы, я буду добавлять / перемещать элементы в соответствии с порядком изменений.
Всякий раз, когда я хочу переместить / удалить какой-либо элемент из списка, я должен изменить индексы других элементов.
для этого я использовал простой код:
for each item in list:
If item's change order > removed/moved item's change order:
Do Item's CO = item's CO - 1
If item's index > removed item's index (This index is not actual index,
is the index where we inserted
/moved the item. Item's actual
index can be different, because
of the movements of other items
in the list)
Do Item's index = item's index - 1
Этот код во многих случаях дает сбой.Например
Исходный список (S, D, G, Y, U, I)
в моем XML У меня есть
X: (newly added) CO 1, index 5
Giving me: (S, D, G, Y, X, U, I)
Y: (already in list at position 4) CO 2 index 6
Giving me: (S, D, G, X, Y, U, I)
после этого в моем фактическом списке:
X: pos: 4
Y: pos: 5
Теперь я хочу удалить X. в соответствии с кодом
Y: индекс CO 1 5
Применение этого к исходному списку: (S, D, G, U, Y, I)
что не так!
Существует ли какой-либо правильный алгоритм для этого типа требований?
Спасибо ....
Я не могу сохранить файл в базе данных.Существует возможность изменения исходного списка.Напримербазовый список (p, q, r).И xml: (добавьте x во 2-е место, добавьте y в 4-е место, переместите Q в 4-е место)Но есть возможность, с помощью которой мой базовый список может стать (w, p, r, g, h), и я должен использовать тот же самый файл xml (добавить x во 2-е место, добавить y в 4-е место, переместить Q в 4-е место), чтобы новые элементы добавлялись в ожидаемую позицию.Если какой-либо элемент (например, Q) отсутствует в базовом списке, но присутствует в xml, я должен игнорировать этот узел xml.