$hs=@() #定义数组

$hs=@{} #定义Hash表,使用哈希表的键可以直接访问对应的值,如 $hs["王五"] 或者 $hs.王五 的值为 75

$hs=@''@ #定义文本字符串

 $hs = @'
张三

12岁
'@

################################

Hash表的新建、修改、删除:

 #新建Hash表
$rs=@{ Name="Lily";score=90 ; Age=20 }
$rs $rs = @{}
$rs.name="Lily"
$rs.score=90
$rs #添加键值
$rs.age=20
$rs #删除键值
$rs.remove("age")
$rs

Hash表嵌套:

 $infors = @{}
$infors.pc1=@{cpu='intel';
mem='4GB'} $infors.pc2=@{cpu='amd';
mem='2GB'}
$infors.pc2.cpu #取pc1的值
$infors.pc1
$infors["pc1"]

取Hash表中的值:

遍历Hash表:

Hash表中的内容不能直接被当做对象来使用,需要进行转换

 #定义Hash表
$hash=@{"name"="ff"}
$hash.Add("dd","fffff")

遍历Hash表:

 #方法一:
foreach($obj in $hash.Keys)
{
$obj
$hash[$obj]
} #方法二:
foreach($obj in $hash)
{
$obj.GetEnumerator()|%{$_.name;$_.value}
} #方法三(复制到数组):
$array=New-Object System.Object[] -ArgumentList $hash.Count
$hash.CopyTo($array,0)
$array

################################

举例:使用Hash表取出分数相同的学生

文件cc.txt内容如下:

李一 93
王二 83
王三 93
李四 60
王五 75
马六 61
孙七 75
刘八 75

将文件cc.txt中的内容保存到Hash表中:

 $hs=@{}
Get-Content d:\cc.txt | ForEach-Object {
$line = $_ -split " "
$hs[$line[0]]= $line[1]
}
$hs

结果如下:

通过 group-object 对成绩分组:

  $hs|%{$_.getenumerator()|group value|?{$_.count -gt 1}|%{$_.group}}

判断Hash表中是否存在某个值:

$hs.contains()

格式化输出:

 #改变列标题为Name,所有ProcessName输出为大写格式,下面两种写法输出结果相同:
get-process|select id,@{Label="Name";Expression={@($_.Processname.toupper())}}|ft -AutoSize
get-process|select id,@{Label="Name";Expression={$_.Processname.toupper()}}|ft -AutoSize

#将ProcessName列标题名称改为Name
get-process|select id,@{Label="Name";Expression="ProcessName"}

参考:http://www.pstips.net/powershell-using-hash-tables.html #创建Hash表

     http://www.pstips.net/powershell-convert-hashtable-to-object.html #将Hash表转换为对象

     http://www.cnblogs.com/fmyuan2000/archive/2010/04/22/1717952.html #遍历Hash表

哈希表(Hash)的应用的更多相关文章

  1. 算法与数据结构基础 - 哈希表(Hash Table)

    Hash Table基础 哈希表(Hash Table)是常用的数据结构,其运用哈希函数(hash function)实现映射,内部使用开放定址.拉链法等方式解决哈希冲突,使得读写时间复杂度平均为O( ...

  2. PHP关联数组和哈希表(hash table) 未指定

    PHP有数据的一个非常重要的一类,就是关联数组.又称为哈希表(hash table),是一种很好用的数据结构. 在程序中.我们可能会遇到须要消重的问题,举一个最简单的模型: 有一份username列表 ...

  3. (四)Redis哈希表Hash操作

    Hash全部命令如下: hset key field value # 将哈希表key中的字段field的值设为value hget key field # 返回哈希表key中的字段field的值val ...

  4. 词典(二) 哈希表(Hash table)

    散列表(hashtable)是一种高效的词典结构,可以在期望的常数时间内实现对词典的所有接口的操作.散列完全摒弃了关键码有序的条件,所以可以突破CBA式算法的复杂度界限. 散列表 逻辑上,有一系列可以 ...

  5. 数据结构,哈希表hash设计实验

    数据结构实验,hash表 采用链地址法处理hash冲突 代码全部自己写,转载请留本文连接, 附上代码 #include<stdlib.h> #include<stdio.h> ...

  6. Redis原理再学习04:数据结构-哈希表hash表(dict字典)

    哈希函数简介 哈希函数(hash function),又叫散列函数,哈希算法.散列函数把数据"压缩"成摘要,有的也叫"指纹",它使数据量变小且数据格式大小也固定 ...

  7. 什么叫哈希表(Hash Table)

    散列表(也叫哈希表),是根据关键码值直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个映射函数叫做散列函数,存放记录的数组叫做散列表. - 数据结构 ...

  8. 数据结构 哈希表(Hash Table)_哈希概述

    哈希表支持一种最有效的检索方法:散列. 从根来上说,一个哈希表包含一个数组,通过特殊的索引值(键)来访问数组中的元素. 哈希表的主要思想是通过一个哈希函数,在所有可能的键与槽位之间建立一张映射表.哈希 ...

  9. golang数据结构之散哈希表(Hash)

    hash.go package hash import ( "fmt" ) type Emp struct { ID int Name string Next *Emp } //第 ...

随机推荐

  1. Undefined symbols for architecture armv7

    xcode编译过程中出现如下问题Undefined symbols for architecture armv7:... ld: symbol(s) not found for architectur ...

  2. C++重要知识点小结---3

    C++重要知识点小结---1:http://www.cnblogs.com/heyonggang/p/3246631.html C++重要知识点小结---2:http://www.cnblogs.co ...

  3. Drupal如何实现类的自动加载?

    Drupal通过spl_autoload_register()注册类加载器实现自动加载: function _drupal_bootstrap_database() { // ... .... spl ...

  4. Drupal如何SQL查询传递参数?

    Drupal使用称之为“placeholder”的方式处理SQL查询参数: <?php // WRONG: $result = db_query("SELECT nid, title ...

  5. 【LeetCode】232 & 225 - Implement Queue using Stacks & Implement Stack using Queues

    232 - Implement Queue using Stacks Implement the following operations of a queue using stacks. push( ...

  6. 积累PDU

    PDU,即专业发展单元PDUs(Professional Development Units)用来量化PMP所参与的学习和专业服务活动.典型情况下,每个小时所进行的有计划的.系统的学习或专业活动可获得 ...

  7. dom 冒泡事件

    <!doctype html> <html> <head> <meta charset="utf-8"> <style> ...

  8. Python 代码性能优化技巧(转)

    原文:Python 代码性能优化技巧 Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化. ...

  9. ntpd和ntpdate

    以无GUI 的Ubuntu 为例 1. ntpdate ntpdate是Ubuntu发行版的标配.按Ubuntu14.04的官方文档(这里),Ubuntu在启动时,会调用ntpdate,根据Ubunt ...

  10. 【转】log4j详解及简易搭建

    原文链接:http://www.cnblogs.com/mailingfeng/archive/2011/07/28/2119937.html log4j是一个非常强大的log记录软件. 首先当然是得 ...