哈希表(Hash)的应用
$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)的应用的更多相关文章
- 算法与数据结构基础 - 哈希表(Hash Table)
Hash Table基础 哈希表(Hash Table)是常用的数据结构,其运用哈希函数(hash function)实现映射,内部使用开放定址.拉链法等方式解决哈希冲突,使得读写时间复杂度平均为O( ...
- PHP关联数组和哈希表(hash table) 未指定
PHP有数据的一个非常重要的一类,就是关联数组.又称为哈希表(hash table),是一种很好用的数据结构. 在程序中.我们可能会遇到须要消重的问题,举一个最简单的模型: 有一份username列表 ...
- (四)Redis哈希表Hash操作
Hash全部命令如下: hset key field value # 将哈希表key中的字段field的值设为value hget key field # 返回哈希表key中的字段field的值val ...
- 词典(二) 哈希表(Hash table)
散列表(hashtable)是一种高效的词典结构,可以在期望的常数时间内实现对词典的所有接口的操作.散列完全摒弃了关键码有序的条件,所以可以突破CBA式算法的复杂度界限. 散列表 逻辑上,有一系列可以 ...
- 数据结构,哈希表hash设计实验
数据结构实验,hash表 采用链地址法处理hash冲突 代码全部自己写,转载请留本文连接, 附上代码 #include<stdlib.h> #include<stdio.h> ...
- Redis原理再学习04:数据结构-哈希表hash表(dict字典)
哈希函数简介 哈希函数(hash function),又叫散列函数,哈希算法.散列函数把数据"压缩"成摘要,有的也叫"指纹",它使数据量变小且数据格式大小也固定 ...
- 什么叫哈希表(Hash Table)
散列表(也叫哈希表),是根据关键码值直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个映射函数叫做散列函数,存放记录的数组叫做散列表. - 数据结构 ...
- 数据结构 哈希表(Hash Table)_哈希概述
哈希表支持一种最有效的检索方法:散列. 从根来上说,一个哈希表包含一个数组,通过特殊的索引值(键)来访问数组中的元素. 哈希表的主要思想是通过一个哈希函数,在所有可能的键与槽位之间建立一张映射表.哈希 ...
- golang数据结构之散哈希表(Hash)
hash.go package hash import ( "fmt" ) type Emp struct { ID int Name string Next *Emp } //第 ...
随机推荐
- PHP截取中文字符串
这里的输出的长度是6,那么一个汉字的字符长度就是3咯,可是老师演示的一个字符的长度却是2,百思不得其解. 查了一下资料发现,这个问题的答案与系统所采用的字符编码方式有关: 1. utf-8 如果系统采 ...
- Linux makefile教程之条件判断六[转]
使用条件判断 —————— 使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支.条件表达式可以是比较变量的值,或是比较变量和常量的值. 一.示例 下面的例子,判断$(CC)变量是否“g ...
- vector 释放内存 swap
相 信大家看到swap这个词都一定不会感到陌生,甚至会有这样想法:这不就是简单的元素交换嘛.的确,swap交换函数是仅次于Hello word这样老得不能老的词,然而,泛型算法东风,这个小小的玩意儿却 ...
- dos攻击
概念理解 DoS到底是什么?接触PC机较早的同志会直接想到微软磁盘操作系统的DOS--DiskOperationSystem?不,此DoS非彼DOS也,DoS即DenialOfService,拒绝服务 ...
- YII中的AR与DAO
一.PDO PDO其实是PHP Database Objects的缩写,中文即PHP数据库对象.它提供了一种统一的PHP与数据库交互的方法. 优势:使得在一个单一的统一的接口可以访问不同的数据库管理系 ...
- 最小高度的BST
加深对BST的构建过程及递归思想的理解. /***************************************************** * \file MinimalBST.cpp * ...
- MVC dropdownlist使用
View中代码 @{ ViewBag.Title = "dropdownlist"; } <h2>dropdownlist</h2> @using (Htm ...
- 使用Java进行MD5加密
使用Java自带的MessageDigest类可以轻松实现MD5加密,只不过加密后得到的是byte数组,我们需要将其转换为16进制的字符. 代码如下: package com.stepsoft.tes ...
- 编译python3
安装环境 yum install gcc yum install zlib-devel yum install make 下载python版本 wget http://www.python.org/f ...
- 安卓手机修改hosts攻略-摘自网络
Android手机是和Google帐号紧密联系的,由于$^&情况,很多时候Google帐号无法登录,导致Android市场无法使用.在电脑上我们通过修改Hosts方法可以解决Google帐号的 ...