Thursday, October 2, 2025

Sort a Map Descending order in X++

 public static Map sortbasedonRVUlevel(Map _unsortedMap, SortOrder _sortOrder = SortOrder::Descending)
 {
     // Initialize map with key=int, value=real
     Map sortedMap = new Map(Types::Int64, Types::Real);
     MapEnumerator e;
     container pairs = conNull();
     int64 key;
     int counter, i, j;
     real valueA, valueB;
     container temp;

     // Insert test data
     //m.insert(1, 10);
     //m.insert(2, 50);
     //m.insert(3, 20);
     //m.insert(4, 80);
     //m.insert(5, 40); 
     //m.insert(6, 40);

     // Gather all entries into the main container
     e = _unsortedMap.getEnumerator();
     while (e.moveNext())
     {
         key = e.current();
         pairs += [[key, _unsortedMap.lookup(key)]];
     }

     // Sort container pairs by value descending (bubble sort for demonstration)
     counter = conLen(pairs);
     for (i = 1; i < counter; i++)
     {
         for (j = i + 1; j <= counter; j++)
         {
             valueA = conPeek(conPeek(pairs, i), 2);
             valueB = conPeek(conPeek(pairs, j), 2);
             if(_sortOrder == SortOrder::Descending)
             {
                 if (valueA < valueB) // For descending order
                 {
                     temp = conPeek(pairs, i);
                     pairs = conPoke(pairs, i, conPeek(pairs, j));
                     pairs = conPoke(pairs, j, temp);
                 }
             }
             else
             {
                 if (valueA > valueB) // For ascending order
                 {
                     temp = conPeek(pairs, i);
                     pairs = conPoke(pairs, i, conPeek(pairs, j));
                     pairs = conPoke(pairs, j, temp);
                 }
             }
         }
     }

     // Output sorted pairs
     for (i = 1; i <= counter; i++)
     {
         key = conPeek(conPeek(pairs, i), 1);
         valueA = conPeek(conPeek(pairs, i), 2);
         sortedMap.add(key, valueA);
         info(strFmt("Key: %1, Value: %2", key, valueA));
     }

     return sortedMap;
 }

No comments:

Post a Comment

Table browser URL in D365FO

Critical Thinking icon icon by Icons8