NamedArraylist class: Difference between revisions
m (→Examples) |
m (typo) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<!-- NamedArraylist class --> | <!-- NamedArraylist class --> | ||
<var> | A <var>NamedArraylist</var> can be thought of as a traditional array with no bounds but | ||
with identifying subscripts that can be arbitrary strings rather than numbers. | with identifying subscripts that can be arbitrary strings rather than numbers. | ||
==About the GenericNamedArraylist class== | ==About the GenericNamedArraylist class== | ||
The <var>NamedArraylist</var> class extends the system <var>[[GenericNamedArraylist class|GenericNamedArraylist]]</var> class, so many of the methods available in the <var>NamedArraylist</var> class are documented as belonging to the <var>GenericNamedArraylist</var> class. Any method available in the <var>GenericNamedArraylist</var> class is also available in the <var>NamedArraylist</var> class. The other classes that extend the <var>GenericNamedArraylist</var> class are the <var>[[FloatNamedArraylist class|FloatNamedArraylist]]</var> class and the <var>[[UnicodeNamedArraylist class|UnicodeNamedArraylist]]</var> class. | The <var>NamedArraylist</var> class extends the system <var>[[GenericNamedArraylist class|GenericNamedArraylist]]</var> class, so many of the methods available in the <var>NamedArraylist</var> class are documented as belonging to the <var>GenericNamedArraylist</var> class. Any method available in the <var>GenericNamedArraylist</var> class is also available in the <var>NamedArraylist</var> class. The other classes that extend the <var>GenericNamedArraylist</var> class are the <var>[[FloatNamedArraylist class|FloatNamedArraylist]]</var> class and the <var>[[UnicodeNamedArraylist class|UnicodeNamedArraylist]]</var> class. | ||
Looking up an item in a <var>NamedArraylist</var> by its name is only slightly | |||
(possibly immeasurably) more CPU intensive than looking up the | |||
item by number, either in a <var>NamedArraylist</var> or in an <var>Arraylist</var>. | |||
<var>NamedArraylist</var> items will also take up a bit more space in CCATEMP | |||
than <var>Arraylist</var> items — the extra space required to hold the names. | |||
Usually, this overhead should be minor. | |||
Because of their relatively low extra overhead, <var>NamedArraylists</var> | |||
should be used wherever their functionality may | |||
prove useful, without concern for performance (which will be quite good). | |||
<div id="NamedArraylist examples"><!--in case references to old section name--> | <div id="NamedArraylist examples"><!--in case references to old section name--> | ||
==Examples== | ==Examples== | ||
The following code shows some of the <var>NamedArraylist</var> methods: | <ul> | ||
<li>The following code shows some of the <var>NamedArraylist</var> methods: | |||
<p class="code">%narl is collection NamedArraylist of longstring | <p class="code">%narl is collection NamedArraylist of longstring | ||
%i is float | %i is float | ||
Line 20: | Line 32: | ||
%narl('Chapman') = 'Graham' | %narl('Chapman') = 'Graham' | ||
Print 'The American | Print 'The American''s first name is ' %narl('Gilliam') | ||
print '*** Completely different:' | print '*** Completely different:' | ||
Line 38: | Line 50: | ||
</p> | </p> | ||
'''Note:''' The items are kept in EBCDIC order by their name. | <p class="note">'''Note:''' The items are kept in EBCDIC order by their name. | ||
This is always the case for <var>NamedArraylist</var> items. | This is always the case for <var>NamedArraylist</var> items. </p></li> | ||
For another example, suppose there is a <var>[[Recordset class|Recordset]]</var> object | <li>For another example, suppose there is a <var>[[Recordset class|Recordset]]</var> object | ||
in a file where field <code>ProductId</code> has a product ID and field <code>Quantity</code> has the number | in a file where field <code>ProductId</code> has a product ID and field <code>Quantity</code> has the number of items with that ID. | ||
of items with that ID. | |||
The product IDs are ten-character alphanumeric IDs, so they cannot be used as numeric subscripts. | The product IDs are ten-character alphanumeric IDs, so they cannot be used as numeric subscripts. | ||
Some records may have the same <code>ProductId</code> as others. | Some records may have the same <code>ProductId</code> as others. | ||
Line 69: | Line 80: | ||
The value of the <code>Quantity</code> field is added to this 0, and the | The value of the <code>Quantity</code> field is added to this 0, and the | ||
total is stored under the product ID. | total is stored under the product ID. | ||
Subsequent requests for the same product ID will return the current running total for that product. | Subsequent requests for the same product ID will return the current running total for that product.</li> | ||
</ul> | |||
==List of NamedArraylist methods== | ==List of NamedArraylist methods== | ||
The [[List of NamedArraylist methods | The [[List of NamedArraylist methods]] shows all the class methods, with a brief description of each. | ||
==See also== | ==See also== | ||
<table> | <table> | ||
<tr>< | <tr><td>[[List of FloatNamedArraylist methods]]</td> | ||
<td>For a list of all methods in the <var>FloatNamedArraylist</var> class, with a brief description of each.</td></tr> | <td>For a list of all methods in the <var>FloatNamedArraylist</var> class, with a brief description of each.</td></tr> | ||
<tr>< | |||
<tr><td nowrap>[[List of UnicodeNamedArraylist methods]]</td> | |||
<td>For a list of all methods in the <var>UnicodeNamedArraylist</var> class, with a brief description of each.</td></tr> | <td>For a list of all methods in the <var>UnicodeNamedArraylist</var> class, with a brief description of each.</td></tr> | ||
<tr>< | |||
<tr><td>[[Collections]]</td> | |||
<td>For background information about collections and <var>Arraylist</var>s and about | <td>For background information about collections and <var>Arraylist</var>s and about | ||
declaring <var>Arraylist</var> object variables.</td></tr> | declaring <var>Arraylist</var> object variables.</td></tr> | ||
<tr>< | |||
considerations for collections]]</ | <tr><td>[[Collections#Coding considerations for collections|Coding | ||
considerations for collections]]</td> | |||
<td>For tips on using collections.</td></tr> | <td>For tips on using collections.</td></tr> | ||
</table> | </table> | ||
[[Category:System classes]] | [[Category:System classes]] |
Latest revision as of 22:43, 11 November 2014
A NamedArraylist can be thought of as a traditional array with no bounds but with identifying subscripts that can be arbitrary strings rather than numbers.
About the GenericNamedArraylist class
The NamedArraylist class extends the system GenericNamedArraylist class, so many of the methods available in the NamedArraylist class are documented as belonging to the GenericNamedArraylist class. Any method available in the GenericNamedArraylist class is also available in the NamedArraylist class. The other classes that extend the GenericNamedArraylist class are the FloatNamedArraylist class and the UnicodeNamedArraylist class.
Looking up an item in a NamedArraylist by its name is only slightly (possibly immeasurably) more CPU intensive than looking up the item by number, either in a NamedArraylist or in an Arraylist. NamedArraylist items will also take up a bit more space in CCATEMP than Arraylist items — the extra space required to hold the names. Usually, this overhead should be minor.
Because of their relatively low extra overhead, NamedArraylists should be used wherever their functionality may prove useful, without concern for performance (which will be quite good).
Examples
- The following code shows some of the NamedArraylist methods:
%narl is collection NamedArraylist of longstring %i is float %narl = new %narl:useDefault = true %narl('Idle') = 'Eric' %narl('Cleese') = 'John' %narl('Gilliam') = 'Terry' %narl('Pallin') = 'Michael' %narl('Chapman') = 'Graham' Print 'The American''s first name is ' %narl('Gilliam') print '*** Completely different:' for %i from 1 to %narl:count print %narl:itemByNumber(%i) and %narl:nameByNumber(%i) end for
This code prints:
The American's first name is Terry *** Completely different: Graham Chapman John Cleese Terry Gilliam Eric Idle Michael Pallin
Note: The items are kept in EBCDIC order by their name. This is always the case for NamedArraylist items.
- For another example, suppose there is a Recordset object
in a file where field
ProductId
has a product ID and fieldQuantity
has the number of items with that ID. The product IDs are ten-character alphanumeric IDs, so they cannot be used as numeric subscripts. Some records may have the sameProductId
as others. NamedArraylists provide an ideal way of getting the total quantity of each item in the Recordset:%quantity is collection NamedArraylist of float ... %quantity = new %quantity:useDefault = true for each record in %recset %quantity(productId) = %quantity(productId) + quantity end for for %i from 1 to %quantity:count print %quantity:nameByNumber(%i) and - %quantity:itemByNumber(%i) end for
Because UseDefault is set to
Subsequent requests for the same product ID will return the current running total for that product.True
, the first reference to a%quantity
item for a givenProductId
will return the default value of0
. The value of theQuantity
field is added to this 0, and the total is stored under the product ID.
List of NamedArraylist methods
The List of NamedArraylist methods shows all the class methods, with a brief description of each.
See also
List of FloatNamedArraylist methods | For a list of all methods in the FloatNamedArraylist class, with a brief description of each. |
List of UnicodeNamedArraylist methods | For a list of all methods in the UnicodeNamedArraylist class, with a brief description of each. |
Collections | For background information about collections and Arraylists and about declaring Arraylist object variables. |
Coding considerations for collections | For tips on using collections. |