我随机生成N个0-65535的整数 转换成Strling
用TStringList载入
然后我要遍历
这个列表是否存在某个数
需要将需要查找的列表中的某个位置的值再转换成整数型
这样就要历经一次
INTTOSTR
和一次
STRTOINT
这样的话。会不会造成很大的效率损失
如果用TintegerList呢
但是好像没有TintegerList这个类!

解决方案 »

  1.   

    你想要类似“TIntegerList”这种玩意为什么不用array of Integer 、TList<Integer>、
    TDictionary<TKey, TValue>如果ui上必须要呈现一个字串列表,那么用键值对做个字典映射。
      

  2.   

    用tobjectlist,可以把整型强制转换成pointer存
      

  3.   

    最好用强类型的集合,用TobjectList存在大量类型转换,效率低且有隐患
      

  4.   

    检查某个东东是否存在没有比哈希表更快地了.
    老版本D的Inifiles但愿有个哈希表实现.新版D则自带了字典类,也就是哈希表
      

  5.   

    转换只需一次吧应该对list先做排序,然后二分查找就很卡了
      

  6.   

     
    TDictionary是现成的东西,比你用tstringlist还方便,
      

  7.   

    0..65535的话开一个布尔数组最快。少量任意整数可以用list。大量任意整数那就老老实实hash吧。
      

  8.   


    支持,对这种0-$FFFF存在与否的查询,用Boolean数组是最快的,生成随机数的时候,把对应的位置设置成True,查询的时候只需要检查对应的值是否是True就知道是否有了
      bList : array [0..$FFFF] of Boolean;
    //初始化的时候
      FillChar(bList,SizeOf(bList) , 0); //初始化
      for i:=1 to ... do begin //生成多少个数
        n := Random($10000);  //确保范围在0-65535之内
        bList[n] := True;
      end;
    查询的时候
    Function ExistsValue(wValue : WORD) : Boolean;
    begin
      Result := bList[wValue];
    end;
      

  9.   

    定义一个整形数组
    arr: array[0..65535] of integer;
    产生随机的整数,以有序的方式插入到arr中。
    查询的时候,用折半算法查找。用tstringlist,简直是坑爹的想法。
      

  10.   


    Tstringlist排序后,自动按折半(二分)算法查找了
      

  11.   

    TStringList 加入的同时,进行排序处理,查找速度很快,可以不做转换(IntToStr,StrToInt)