en-US/about_ArrayList.help.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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