zoukankan      html  css  js  c++  java
  • map的使用

    本文中提到的map不是在AOT->Data Dicitionary->Maps中的Map,而是Axapta中的五个基础类Sets, maps, lists, arrays 和structs中的一个,为了保证效率这五个基础类是用C++写的,暴露出接口供X++调用.
    map是键值对,类似于C#里的HashTable.在看财务过账的代码时,发现了一段使用Map比较典型的代码,摘录在这里,免得以后找起来麻烦.
    代码路径如下:AO->Classes->SalesFormLetter->updateQueryBuild
      Map              mapSalesRecord;
      MapEnumerator    mapSalesRecordEnumerator;
      ;
       mapSalesRecord 
    = map::create(Formletter::getFormRecord(callerFormDataSource));
            mapSalesRecordEnumerator 
    = mapSalesRecord.getEnumerator();

            
    while (mapSalesRecordEnumerator.moveNext())
            
    {
                localSalesTable 
    = mapSalesRecordEnumerator.currentValue();

             }
    创建map时使用了map类的静态方法create,其入参为container.
    看一下FormLetter的静态方法getFormRecord.
    client static container getFormRecord(FormDataSource TradeRecord_ds)
    {
        common      TradeRecord;
        Map         mapTradeRecord 
    = new map(TYPES::INTEGER,TYPES::RECORD);

        
    for (TradeRecord = TradeRecord_ds.getFirst(true? TradeRecord_ds.getFirst(true) : TradeRecord_ds.cursor(); TradeRecord; TradeRecord = TradeRecord_ds.getNext())
        
    {
            mapTradeRecord.insert(TradeRecord.RecId,TradeRecord);
        }


        
    return mapTradeRecord.pack();
    }

    虽然感觉上面的代码有些过烦,不过做为map的使用示例还是比较适合的.当然也可以用MapIterator类来遍历map,在while()里的将是mapIterator.more(),取值用mapIterator.value,move到下一条用mapIterator.next(),如下所示:
    MapIterator  mapIterator;
    ;
    mapIterator 
    = new MapIterator(mapSalesRecord);
    while(mapIterator.more())
    {
         localSalesTable 
    = mapIterator.value();
         
         mapIterator.next();
    }

  • 相关阅读:
    优化linux,安装node环境
    腾讯云主机的公网无法访问,putty和FileZilla连接不上
    angularjs1.x的directive中的link参数element见解
    springboot自动装配原理
    redis哨兵部署
    HashMap笔记
    多线程与高并发
    java面试必会知识点
    maven仓库
    java任务调度简单示例
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/508542.html
Copyright © 2011-2022 走看看