Sort (Arraylist subroutine): Difference between revisions
m (1 revision) |
m (1 revision) |
||
Line 1: | Line 1: | ||
{{Template:Arraylist:Sort subtitle}} | {{Template:Arraylist:Sort subtitle}} | ||
[[Category:Arraylist methods|Sort subroutine]] | [[Category:Arraylist methods|Sort subroutine]] | ||
<!--DPL?? Category:Arraylist methods|<var>Sort</var> subroutine: <var>Sort</var> the input Arraylist--> | <!--DPL?? Category:<var>Arraylist</var> methods|<var>Sort</var> subroutine: <var>Sort</var> the input <var>Arraylist</var>--> | ||
<p> | <p> | ||
<var>Sort</var> is a member of the [[Arraylist class]]. | <var>Sort</var> is a member of the [[Arraylist class]]. | ||
</p> | </p> | ||
This subroutine sorts the method object Arraylist and replaces it with the | This subroutine sorts the method object <var>Arraylist</var> and replaces it with the | ||
sorted result. | sorted result. | ||
The sort is based on one or more sort criteria which consist of | The sort is based on one or more sort criteria which consist of | ||
a sorting direction (ascending or descending) paired with a sort key | a sorting direction (ascending or descending) paired with a sort key | ||
(a function that gets applied to each Arraylist item). | (a function that gets applied to each <var>Arraylist</var> item). | ||
Each sort criterion pair is a [[SortOrder class|SortOrder]] object, | Each sort criterion pair is a [[SortOrder class|SortOrder]] object, | ||
and multiple pairs are a <var>Sort</var>Order collection. | and multiple pairs are a <var>Sort</var>Order collection. | ||
The sort key function that gets applied to each Arraylist item, which | The sort key function that gets applied to each <var>Arraylist</var> item, which | ||
you identify in the <var>Sort</var> parameter, must | you identify in the <var>Sort</var> parameter, must | ||
operate on the item type and return a User Language intrinsic | operate on the item type and return a User Language intrinsic | ||
datatype (Float, String, Longstring, or Unicode) value. | datatype (Float, String, Longstring, or Unicode) value. | ||
The values returned by the function are sorted into ascending or descending order | The values returned by the function are sorted into ascending or descending order | ||
to determine the position of their associated item in the Arraylist. | to determine the position of their associated item in the <var>Arraylist</var>. | ||
The system intrinsic classes are discussed in "[[Intrinsic classes]]". | The system intrinsic classes are discussed in "[[Intrinsic classes]]". | ||
Line 28: | Line 28: | ||
===Syntax terms=== | ===Syntax terms=== | ||
<table class="syntaxTable"> | <table class="syntaxTable"> | ||
<tr><th><i> | <tr><th><i><var class="term">al</var></i></th> | ||
<td>The input Arraylist object. </td></tr> | <td>The input <var>Arraylist</var> object. </td></tr> | ||
<tr><th><i>sortCriteria</i></th> | <tr><th><i>sortCriteria</i></th> | ||
<td>One or more <var>Sort</var>Order objects, which consist of an ordering direction for the sort and an attribute, or key, to sort by. The ordering direction and sort key are specified in the form: <tt>order(key)</tt>. The order is either <tt>Ascending</tt> or <tt>Descending</tt>, and the key is a function that is applied to each item in the Arraylist. The values returned by the function are sorted into ascending or descending order to determine the position of their associated item in the rearranged Arraylist. For example: <pre style="xmp"> | <td>One or more <var>Sort</var>Order objects, which consist of an ordering direction for the sort and an attribute, or key, to sort by. The ordering direction and sort key are specified in the form: <tt>order(key)</tt>. The order is either <tt>Ascending</tt> or <tt>Descending</tt>, and the key is a function that is applied to each item in the <var>Arraylist</var>. The values returned by the function are sorted into ascending or descending order to determine the position of their associated item in the rearranged <var>Arraylist</var>. For example: <pre style="xmp"> <var class="term">al</var>:sortnew(descending(length)) </pre> | ||
The function is a method value (a method or class member name literal, or a method variable) for a method that operates on items of the type specified on the '' | The function is a method value (a method or class member name literal, or a method variable) for a method that operates on items of the type specified on the ''<var class="term">al</var>'' declaration and that returns a numeric or string value. This is described further in "[[SortOrder class#Specifying a SortOrder's sort key method|Specifying a SortOrder's sort key method]]".</td></tr> | ||
</table> | </table> | ||
==Usage notes== | ==Usage notes== | ||
Line 44: | Line 44: | ||
"z" ranks lower than all the uppercase letters; | "z" ranks lower than all the uppercase letters; | ||
and all letters rank lower than any number. | and all letters rank lower than any number. | ||
<li>If two or more Arraylist items have equal values after all sort criteria | <li>If two or more <var>Arraylist</var> items have equal values after all sort criteria | ||
are applied, <var>Sort</var> places them in the same order in which they appear in the | are applied, <var>Sort</var> places them in the same order in which they appear in the | ||
input Arraylist. | input <var>Arraylist</var>. | ||
<li>The function in the parameter for <var>Sort</var> is a method value, not a User Language expression. | <li>The function in the parameter for <var>Sort</var> is a method value, not a User Language expression. | ||
That is, you cannot provide a function that itself has an argument | That is, you cannot provide a function that itself has an argument | ||
Line 54: | Line 54: | ||
where <tt>This</tt> is the identity function described further | where <tt>This</tt> is the identity function described further | ||
in "[[Collections#Using the This function as the Maximum parameter|Using the This function as the Maximum parameter]]". | in "[[Collections#Using the This function as the Maximum parameter|Using the This function as the Maximum parameter]]". | ||
Therefore, <tt> | Therefore, <tt><var class="term">al</var>:sort(ascending(this))</tt> can be | ||
specified simply as <tt> | specified simply as <tt><var class="term">al</var>:sort</tt>. | ||
See "[[SortNew (Arraylist function)#Examples|SortNew example]]". | See "[[SortNew (Arraylist function)#Examples|SortNew example]]". | ||
<li>[[SortNew (Arraylist function)|SortNew]] is a function that works like <var>Sort</var> | <li>[[SortNew (Arraylist function)|SortNew]] is a function that works like <var>Sort</var> | ||
but returns a new Arraylist instead of replacing the method object. | but returns a new <var>Arraylist</var> instead of replacing the method object. | ||
<li>For examples of the <var>Sort</var> method, see [[Collections#Finding collection maxima and minima, and sorting|Finding collection maxima and minima, and sorting]]. | <li>For examples of the <var>Sort</var> method, see [[Collections#Finding collection maxima and minima, and sorting|Finding collection maxima and minima, and sorting]]. | ||
</ul> | </ul> |
Revision as of 02:29, 20 January 2011
Sort the input Arraylist (Arraylist class)
Sort is a member of the Arraylist class.
This subroutine sorts the method object Arraylist and replaces it with the sorted result. The sort is based on one or more sort criteria which consist of a sorting direction (ascending or descending) paired with a sort key (a function that gets applied to each Arraylist item). Each sort criterion pair is a SortOrder object, and multiple pairs are a SortOrder collection.
The sort key function that gets applied to each Arraylist item, which you identify in the Sort parameter, must operate on the item type and return a User Language intrinsic datatype (Float, String, Longstring, or Unicode) value. The values returned by the function are sorted into ascending or descending order to determine the position of their associated item in the Arraylist.
The system intrinsic classes are discussed in "Intrinsic classes".
Sort is available in Sirius Mods version 7.3 and later.
Syntax
al:Sort[( [sortOrder])]
Syntax terms
al | The input Arraylist object. |
---|---|
sortCriteria | One or more SortOrder objects, which consist of an ordering direction for the sort and an attribute, or key, to sort by. The ordering direction and sort key are specified in the form: order(key). The order is either Ascending or Descending, and the key is a function that is applied to each item in the Arraylist. The values returned by the function are sorted into ascending or descending order to determine the position of their associated item in the rearranged Arraylist. For example: <var class="term">al</var>:sortnew(descending(length))The function is a method value (a method or class member name literal, or a method variable) for a method that operates on items of the type specified on the al declaration and that returns a numeric or string value. This is described further in "Specifying a SortOrder's sort key method". |
Usage notes
- If the function applied by Sort returns string values, Sort uses the decimal-equivalent value of the character bytes to determine the ascending or descending alphabetic order of the associated arraylist items. In ascending order, the highest or last lowercase letter is "z"; the highest or last uppercase letter is "Z"; "z" ranks lower than all the uppercase letters; and all letters rank lower than any number.
- If two or more Arraylist items have equal values after all sort criteria are applied, Sort places them in the same order in which they appear in the input Arraylist.
- The function in the parameter for Sort is a method value, not a User Language expression. That is, you cannot provide a function that itself has an argument (say, ToIntegerPower(2)) as the Sort parameter.
- As of Sirius Mods version 7.6, the default sortCriteria argument is the SortOrder Ascending(This), where This is the identity function described further in "Using the This function as the Maximum parameter". Therefore, al:sort(ascending(this)) can be specified simply as al:sort. See "SortNew example".
- SortNew is a function that works like Sort but returns a new Arraylist instead of replacing the method object.
- For examples of the Sort method, see Finding collection maxima and minima, and sorting.