Изменение порядка позиций ключей SortedDictionary - PullRequest
0 голосов
/ 13 октября 2011

Мне нужно иметь возможность изменить порядок списка чисел на основе нажатия кнопки увеличения / уменьшения стрелки. Итак, у меня есть список предметов в настоящее время в SortedDoctionary. Когда я его распечатываю, это выглядит так:

key : value    
 1  :  1
 2  :  2
 3  :  25
 4  :  29
 5  :  31

Когда пользователь нажимает кнопку «ВВЕРХ», я хотел бы изменить key[3] на key[2]. Так что просто поменяйте местами. Конечные результаты должны дать мне такой вывод:

key : value
 1  :  1
 2  :  25
 3  :  2
 4  :  29
 5  :  31

Так что мне нужно изменить положение вверх или вниз в списке. Любая помощь будет принята с благодарностью!

Ответы [ 3 ]

0 голосов
/ 13 октября 2011

Если у вас есть Dictionary<int, int> dict, попробуйте это:

private void Swap(int key)
{
    int swap = dict[key];
    dict[key] = dict[key + 1];
    dict[key + 1] = swap;
}

или

private void Swap(int key1, int key2)
{
    if (key1 != key2)
    {
        int swap = dict[key1];
        dict[key1] = dict[key2];
        dict[key2] = swap;
    }
}
0 голосов
/ 13 октября 2011

Поскольку это отсортированный список, возможно, вы хотите, чтобы ключ оставался прежним, но менял значение?

var lower = 2;
var upper = 3;

var tmp = collection[lower];
collection[lower] = collection[upper];
collection[upper] = tmp;
0 голосов
/ 13 октября 2011
int index1 = 2;
int index2 = 3;

var temp = myDict[index1];
myDict[index1] = myDict[index2];
myDict[index2] = temp;

Это классическая переменная swap-through-a-temp (чтобы отличить ее от swap-through-xor). Где была проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...