나는 거대한 목록을 가지고 있습니다. 이 목록에서 항목을 추가/재정렬/제거 할 수 있습니다. 목록이 실제로 버그이므로 전체 목록의 스냅 샷을 시스템의 어느 곳에 나 저장하고 싶지 않습니다. 대신 추가/이동 된 항목을 추적하는 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은 : (2 번째 자리에 x를 붙이고, 4 번째 자리에 y를 더하고, 4 번째 자리로 Q를 옮깁니다). 그러나 내 기본 목록 (w, p, r, g, h)이 될 수있는 가능성이 있고 동일한 xml 파일을 사용해야합니다 (x를 두 번째 pos에 추가하고 y를 네 번째 pos에 추가하고 Q를 네 번째 pos로 이동해야합니다) 새 요소가 예상 위치에 추가됩니다. Q와 같은 일부 항목이 기본 목록에 없지만 xml에있는 경우 xml 노드를 무시해야합니다.
로 변경 그래서 목록은 거대하고 정말 큰이기 때문에 당신은 그것을 저장하지 않습니다. 그러나 변경 사항을 모두 저장하고 싶습니다. * XML *. 나는 그것이 더 작은 것을 만드는 것을 도울 것이라고 생각하지 않는다. –
크기가 얼마나 큽니까? –
답장을 보내 주셔서 감사합니다. 데이터베이스에 파일을 저장할 수 없습니다. 목록이 거대하기 때문에뿐만 아니라. 원래 목록이 바뀔 수있는 가능성이 있습니다. 예를 들어. 기본리스트는 (p, q, r)이다. 그리고 xml은 : (2 번째 자리에 x를 붙이고, 4 번째 자리에 y를 더하고, 4 번째 자리로 Q를 옮깁니다). 그러나 내 기본 목록 (w, p, r, g, h)이 될 수있는 가능성이 있고 동일한 xml 파일을 사용해야합니다 (x를 두 번째 pos에 추가하고 y를 네 번째 pos에 추가하고 Q를 네 번째 pos로 이동해야합니다) 새 요소가 예상 위치에 추가됩니다. Q와 같은 일부 항목이 기본 목록에 없지만 xml에있는 경우 xml 노드를 무시해야합니다. – needhelpwithalgo