en-US/about_ArrayList.help.txt

TOPIC
    about_ArrayList
 
SHORT DESCRIPTION
    Arrays in friendly PowerShell syntax, but using faster .NET collections under the hood.
 
LONG DESCRIPTION
    ArrayList's goal is to reduce usage of @() and += in PowerShell scripts.
     
    That topic has been written about plenty: search "powershell array performance" for details.
     
    ArrayList provides commands that follow the same usage pattern, and hopefully are easy enough
    to remember that you no longer use @() just because you can't remember the .NET syntax.
 
  GETTING STARTED
    # Add 100,000 items to a new Generic.List collection
    $100k = New-ArrayList
    Get-Help Add-ArrayObject -Examples
    1..100000 | Add-ArrayObject -Array $100k
    $100k | Select-Object -First 3 -Last 3
 
  ADVANCED USES
    # Use a type-safe Generic.List<T> collection
    ### int, string, PSCustomObject...bring your own type
    $10 = New-ArrayList -Type int
    1..10 | Add-ArrayObject $10
     
    # Adding a string fails
    'test' | Add-ArrayObject $10
 
    # Remove multiple items at once, instead of the .NET method stopping after the first instance
    3,3,3 | Add-ArrayObject $10
    3 | Remove-ArrayObject $10
 
NOTE
    "New-ArrayList" will default to the [System.Collections.Generic.List<System.Object>] type.
 
    Using "New-ArrayList -Type string" will ensure your collection only accepts [string] objects.
 
    "New-ArrayList -Legacy" will create an ArrayList, but note that in .NET/C# land,
    [System.Collections.Generic.List<T>] is preferred. (see below for links)
 
SEE ALSO
    Q: Why didn't you _?
    A: Choose one of three:
      1. No need for 100% coverage at release; you can help contribute functions to wrap other methods you use often
      2. It's entirely possible (likely?) I didn't know you could do it _that way_
      3. Following 2, there are some interesting quirks when you start diving into abstracting List collections
     
    On ArrayList vs. List<T>:
      https://msdn.microsoft.com/en-us/library/system.collections.arraylist(v=vs.110).aspx#Anchor_6
      https://stackoverflow.com/questions/2309694/arraylist-vs-list-in-c-sharp
 
    On retaining the correct List type and still reporting the correct object count:
      https://serverfault.com/questions/708832/how-to-cast-as-arraylist-preset-data-in-param-block-and-return-as-arraylist
      https://connect.microsoft.com/PowerShell/feedback/details/1622532
 
    On removal of all member objects, instead of only the first instance:
      https://www.sapien.com/blog/2014/11/18/removing-objects-from-arrays-in-powershell/
 
KEYWORDS
    arraylist, list, genericlist, array, collection, append