Collection classes in Dynamics 365 for Finance and Operations


public void collectionClasses()
    {
        //1. List
        //To add values to the list
        List lst = new List(Types::String);
        lst.addEnd("Value-1");
        lst.addEnd("Value-2");
        lst.addStart("Value-3");
        lst.addEnd("Value-4");

        //Ouput: Value-3, Value-1, Value-2, Value-4

        //Enumerate the list
        ListEnumerator lstEnumerator = lst.getEnumerator();
        while (lstEnumerator.moveNext())
        {
            info(lstEnumerator.current()); //Current value of the list
        }

        //List usage - List of all Devlivered service records
        POLMobileServiceTable   polMobileServiceTable;
        List                    lstDelivered = new List(Types::String);

        while select * from polMobileServiceTable
            where polMobileServiceTable.ServiceStatus == POLServiceStatus::Delivered
        {
            lstDelivered.addEnd(polMobileServiceTable.ServiceID);
        }

        //2. Set
        Set mySet = new Set(Types::String);
        mySet.add("Value-3");
        mySet.add("Value-2");
        mySet.add("Value-1");
        mySet.add("Value-4");

        //Output: Value-1, Value-2, Value-3, Value-4

        //Iterate the set
        SetEnumerator setEnum = mySet.getEnumerator();
        while(setEnum.moveNext())
        {
            info (setEnum.current()); //Current value of the set.
        }

        //Set usage - List of all Devlivered service records
        POLMobileServiceTable   polMobileServiceTable;
        Set                     setDelivered = new Set(Types::String);

        while select * from polMobileServiceTable
            where polMobileServiceTable.ServiceStatus == POLServiceStatus::Delivered
        {
            setDelivered.add(polMobileServiceTable.ServiceID); //Service IDs willbe arranged in alphabetical order.
        }

        //Functions of set
        //Set::union(set1, set2)
        //Set::difference(set1, set2)
        //Set::intersection(set1, set2)



        //3. Map - Hashtable (Key, Value pair)
        Map myMap = new Map(Types::String, Types::Real);

        myMap.add("Value1", 1234.92);
        myMap.add("Value2", 123.92);
        myMap.add("Value3", 15.92);

        //Iterate map
        MapEnumerator mapEnum = myMap.getEnumerator();
        while (mapEnum.moveNext())
        {
            info (strFmt("Key: %1, Value: %2", mapEnum.currentKey(), mapEnum.currentValue());
        }

        //Retrieve value from map
        real amount = myMap.lookup("Value1"); //1234.92

        //Exists in map
        if (myMap.exists("Value4") //No error will be thrown since Value 4 is not available
        {
            real amount1 = myMap.lookup("Value4"); //1234.92
        }
    }