ค้นหาเว็บไซต์

PowerShell Hashtable กับอาร์เรย์


เมื่อทำงานกับคอลเลกชันใน PowerShell โครงสร้างข้อมูลพื้นฐานสองประการที่คุณจะพบคืออาร์เรย์และแฮชเทเบิล ทั้งสองมีประโยชน์อย่างเหลือเชื่อ แต่มีวัตถุประสงค์ที่แตกต่างกันและมีลักษณะเฉพาะ ในบทช่วยสอนนี้ เราจะมาพูดถึงความแตกต่างของแฮชเทเบิลของ PowerShell และอาเรย์

ใน PowerShell อาร์เรย์คือชุดของรายการที่สามารถเข้าถึงได้โดยดัชนี ในขณะที่แฮชเทเบิลคือชุดของคู่คีย์-ค่าที่เข้าถึงได้ด้วยคีย์ อาร์เรย์ได้รับการเรียงลำดับ และขนาดของอาร์เรย์จะได้รับการแก้ไขเมื่อสร้าง แม้ว่าอาร์เรย์เหล่านี้สามารถจัดการเพื่อจำลองพฤติกรรมแบบไดนามิกได้ก็ตาม ในทางกลับกัน Hashtable ไม่มีการเรียงลำดับ และขนาดสามารถเปลี่ยนแปลงแบบไดนามิกเมื่อมีการเพิ่มหรือลบคู่คีย์-ค่า

อาร์เรย์ใน PowerShell คืออะไร

อาร์เรย์คือชุดของรายการที่จัดเก็บไว้ในตำแหน่งหน่วยความจำที่อยู่ติดกัน แนวคิดคือการจัดเก็บสิ่งของประเภทเดียวกันหลายรายการไว้ด้วยกัน ซึ่งช่วยให้คำนวณตำแหน่งของแต่ละองค์ประกอบได้ง่ายขึ้นโดยการเพิ่มออฟเซ็ตให้กับค่าฐาน เช่น ตำแหน่งหน่วยความจำขององค์ประกอบแรกของอาร์เรย์ (โดยทั่วไปจะแสดงด้วยดัชนี 0)

การสร้างและการใช้อาร์เรย์ PowerShell

ต่อไปนี้คือวิธีที่คุณสามารถสร้างและจัดการอาร์เรย์ใน PowerShell:

# Creating an array
$myArray = @(1, 2, 'three', 4, 'five')

# Accessing array elements
$firstElement = $myArray[0] # Returns 1
$thirdElement = $myArray[2] # Returns 'three'

# Adding elements to an array
$myArray += 6

# Iterating over an array
foreach ($element in $myArray) {
    Write-Host $element
}

อาร์เรย์ใน PowerShell มีการจัดทำดัชนีเป็นศูนย์ หมายความว่าองค์ประกอบแรกอยู่ที่ดัชนี 0 และยังมีขนาดคงที่อีกด้วย เมื่อคุณเพิ่มรายการลงในอาร์เรย์ PowerShell จะสร้างอาร์เรย์ใหม่พร้อมกับรายการเพิ่มเติม และแทนที่อาร์เรย์เก่าด้วยรายการใหม่

Hashtable ใน PowerShell คืออะไร

แฮชเทเบิล ซึ่งบางครั้งเรียกว่าพจนานุกรมหรืออาร์เรย์ที่เชื่อมโยง เป็นโครงสร้างที่จัดเก็บข้อมูลเป็นคู่คีย์-ค่า แต่ละรายการในแฮชเทเบิลจะมีคีย์เฉพาะที่เกี่ยวข้องซึ่งใช้เพื่อเข้าถึงค่า

การสร้างและการใช้ PowerShell Hashtables

การสร้างและการใช้แฮชเทเบิลใน PowerShell มีลักษณะดังนี้:

# Creating a hashtable
$myHashtable = @{
    Key1 = 'Value1'
    Key2 = 2
    Key3 = $true
}

# Accessing hashtable values
$valueByKey1 = $myHashtable['Key1'] # Returns 'Value1'

# Adding key-value pairs to a hashtable
$myHashtable['Key4'] = 'New Value'

# Iterating over a hashtable
foreach ($key in $myHashtable.Keys) {
    Write-Host "$key = $($myHashtable[$key])"
}

Hashtables มีประโยชน์อย่างยิ่งเมื่อคุณต้องการเข้าถึงค่าอย่างรวดเร็วโดยใช้คีย์ ต่างจากอาร์เรย์ตรงที่ไม่มีการเรียงลำดับ และคุณไม่สามารถเข้าถึงองค์ประกอบด้วยดัชนีได้ แต่คุณใช้คีย์เพื่อเข้าถึงค่าที่เกี่ยวข้องแทน

ความแตกต่างระหว่างอาร์เรย์และ Hashtables ใน PowerShell

ความแตกต่างหลักระหว่างอาร์เรย์และแฮชเทเบิลใน PowerShell อยู่ที่โครงสร้างและการใช้งาน:

  • ดัชนีเทียบกับคีย์: อาร์เรย์เป็นคอลเล็กชันที่ได้รับการจัดทำดัชนี ซึ่งหมายความว่ารายการต่างๆ จะถูกจัดเก็บและเข้าถึงได้ผ่านทางดัชนี Hashtables จัดเก็บรายการเป็นคู่คีย์-ค่า ซึ่งเข้าถึงได้ผ่านคีย์เฉพาะ
  • ลำดับ: มีการเรียงลำดับอาร์เรย์ ซึ่งหมายความว่ารายการต่างๆ มีลำดับเฉพาะ Hashtables ไม่มีการเรียงลำดับ รายการไม่มีลำดับตายตัว
  • ประสิทธิภาพ: การเข้าถึงองค์ประกอบในอาร์เรย์ตามดัชนีทำได้อย่างรวดเร็ว อย่างไรก็ตาม เมื่อลำดับไม่สำคัญ และคุณต้องค้นหารายการบ่อยครั้ง แฮชเทเบิลจะให้ประสิทธิภาพที่ดีกว่า เนื่องจากให้การค้นหาที่เร็วขึ้นตามคีย์
  • ความยืดหยุ่น: อาร์เรย์จะดีที่สุดเมื่อคุณต้องการคอลเลกชันที่เรียบง่ายและเรียงลำดับ Hashtables เหมาะอย่างยิ่งเมื่อคุณต้องการเชื่อมโยงค่ากับคีย์เพื่อให้คุณสามารถค้นหาได้อย่างมีประสิทธิภาพในภายหลัง

วิธีการและตัวอย่าง

ต่อไปนี้เป็นวิธีการของอาร์เรย์ PowerShell และแฮชเทเบิลพร้อมตัวอย่าง

อาร์เรย์

# Reversing an array
$reversedArray = [array]::Reverse($myArray)

# Sorting an array
$sortedArray = $myArray | Sort-Object

แฮชเทเบิล

# Checking if a key exists
$hasKey1 = $myHashtable.ContainsKey('Key1') # Returns $true

# Removing a key-value pair
$myHashtable.Remove('Key3')

# Getting all keys or values
$allKeys = $myHashtable.Keys
$allValues = $myHashtable.Values

นี่คือบทสรุปของความแตกต่างระหว่าง PowerShell hashtable และ array

FeatureArrayHashtable
StructureIndexedKey-Value Pairs
OrderOrderedUnordered
AccessBy IndexBy Key
Use CaseSimple listsQuick lookups
ModificationFixed size, slower to modifyDynamic, easy to add/remove
Lookup SpeedFast by indexFast by key

สรุป

โดยสรุป ไม่ว่าคุณจะใช้อาร์เรย์หรือแฮชเทเบิลใน PowerShell ขึ้นอยู่กับความต้องการเฉพาะของสคริปต์ของคุณ อาร์เรย์เหมาะอย่างยิ่งสำหรับรายการที่เรียบง่ายและเรียงลำดับ และเมื่อคุณต้องการวนซ้ำรายการเหล่านั้นตามลำดับ Hashtables เป็นตัวเลือกที่ดีกว่าสำหรับโครงสร้างข้อมูลที่ซับซ้อนซึ่งจำเป็นต้องเข้าถึงองค์ประกอบต่างๆ อย่างรวดเร็วผ่านคีย์

ฉันหวังว่าคุณจะเข้าใจความแตกต่างระหว่างอาร์เรย์และแฮชเทเบิลใน PowerShell

บทความที่เกี่ยวข้อง