Originariamente inviato da Valeriodev
Mi sa che il lavoro è quello e non c'è altra possibilità ammeno che potresti fare ...
per esempio hai
1
2
3
4
5
6
vuoi inserire tra 3 e 4 metti
1
2
3
3-1
3-2
4
5
6
dai volendo potrbbe essere una soluzione migliore di andare a modificare n valori dopo, il che sarebbe faticoso se fossero migliaia e migliaia di record.
Dal mio punto di vista, non adotterei mai questa soluzione, poiché potrebbe rivelarsi un "suicidio" in seguito: avere un campo numerico che denota la posizione di un elemento è sempre il metodo più rapido per ottenere confronti e per determinare con assoluta certezza la posizione ordinale dell'elemento stesso.

Con una soluzione di questo tipo, supponendo che l'elemento "3-1" debba essere spostato verso l'alto, quale sarebbe il valore da attribuire all'elemento (o al precedente)?

Per evitare di attribuire una posizione sensata, numerica, sicura a tutti gli elementi evitando un banale ciclo che riassegna le posizioni come si farebbe in un vettore, proprio perché alla fine non si tratta di qualcosa di logicamente distante, ci si trova a fare i conti con un algoritmo che risulta molto più complesso da gestire, poiché la cifra si compone di due elementi, ma potrebbero diventare infiniti e ingestibili.

Se io volessi - ad esempio - inserire un elemento tra "3-1" e "3-2", cosa diventerebbe? Magari "3-1-1"? E se poi questi elementi vengono spostati, qual è il valore che dovrebbe essere attribuito all'elemento? Virtualmente, se si adotta questo principio, la stringa della posizione potrebbe diventare lunghissima, senza alcun vantaggio apparente, poiché basta attribuire il numero 3 ad un elemento se questo è il terzo, 4 per il quarto e così via.

In breve, mi sembra una soluzione semplice se applicata ad un singolo caso di inserimento di un solo elemento tra i due, ma diventerebbe la cosa più lenta, inefficace e complessa da gestire di tutte con l'inserimento di più valori e il continuo spostamento di questi, con l'inserimento di nuovi elementi tra di loro.

Ciao!