Показать сообщение отдельно
Старый 15.10.2008, 09:34   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Мне это сообщение напомнило о том (после того, как я накидал джобик), что можно случайно забыть, какой тип у ключа и у значения 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