Мне это сообщение напомнило о том (после того, как я накидал джобик), что можно случайно забыть, какой тип у ключа и у значения Map и без проблем засунуть целочисленные значения в строковые и наоборот - и, соответственно, получить "неожиданную" сортировку. Чего не скажешь, например, о Set, у которого контроль на входе более жесткий.
А джобик прилагаю (раз уж накидал)
X++:
static void Job92(Args _args)
{
Map map = new Map(Types::String, Types::String);
//Map map = new Map(Types::Integer, Types::Integer);
Set setStr = new Set(Types::String);
Set setInt = new Set(Types::Integer);
;
//3,4,5,6,7,8,10,12,14,16
map.insert(3,3);
map.insert(4,4);
map.insert(12,12);
map.insert(14,14);
map.insert(16,16);
map.insert(5,5);
map.insert(6,6);
map.insert(7,7);
map.insert(8,8);
map.insert(10,10);
setStr.add('7');
setStr.add('8');
setStr.add('10');
setStr.add('3');
setStr.add('4');
setStr.add('5');
setStr.add('6');
setStr.add('12');
setStr.add('14');
setStr.add('16');
setInt.add(14);
setInt.add(16);
setInt.add(10);
setInt.add(12);
setInt.add(6);
setInt.add(7);
setInt.add(8);
setInt.add(3);
setInt.add(4);
setInt.add(5);
info(map.toString());
info(setStr.toString());
info(setInt.toString());
}
P.S. Задействовать номерную серию для генерации строковых ключей в Map, наверное, можно, но я обычно обхожусь походным текстовым счетчиком типа:
X++:
key ='N'+subStr(int2str(1000000+i),2,6); // N000001
или просто равнодлинными "телефонными номерами", т.е. с добавлением заведомо большого числа:
X++:
key =1000000+i; // 1000001