importFoundation
println("字典")
/*
字典是一种存储相同类型多重数据的存储器。每个值(value)都关联独特的键(key),键作为字典中的这个值数据的标识符。和数组中的数据项不同,字典中的数据项并没有具体顺序。我们在需要通过标识符(键)访问数据的时候使用字典
*/
//(1)创建一个字典
vardic:Dictionary<String,>=["三国演义":"罗贯中"水浒传":"施耐庵"红楼梦":"曹雪芹"西游记":"吴承恩"];
(dic);
//执行结果:[三国演义:罗贯中,水浒传:施耐庵,红楼梦:曹雪芹,西游记:吴承恩]
//(2)访问字典
varname=dic[三国演义"];
name //执行结果:罗贯中
//(3)向字典中添加键值
varstudent:Dictionary<String,Int> = [小明":10001,小华10002,27)">小红10003];//声明一个学生字典键:姓名值学号
//添加
student[理想]=10004;
student);
//执行结果:[小华: 10002,小红: 10003,小明: 10001,理想: 10004]
//修改
.updateValue(12345);//将理想的学号改为12345 updateValue()这个方法返回更新值之前的原值。这样方便我们检查更新是否成功
//执行结果:[小华: 10002,理想: 12345]
//删除
.removeValueForKey);将理想删除
小明: 10001]
//获得键对应的值
letvalue =student["];删除
println("小明的value为\(value)" //执行结果:小明的value为10001
//(4)遍历 for in字典会以元组(键,值)的形式返回
for(key,value)in无序
{
println(键:\(key)值:\(value)");
}
//执行结果:
/*
键:小华值:10002
键:小红值:10003
键:小明值:10001
*/
//或者
fortuples:\(tuples.0)1) //我们也可以通过访问他的keys或者values属性(都是可遍历集合)检索一个字典的键或者值
forkeystudent.keys
"key=:\(key) key=:小华
key=:小红
key=:小明
forvaluevalues
"value=:\(value) key=:10002
key=:10003
key=:10001
//(5)通过构造方法创建字典
varnamesOfIntegers =Int,170)">String>()
//(6)字典类型的赋值和拷贝行为
注意:字典和数组的拷贝是不同的
1.无论何时将一个字典实例赋给一个常量或变量,或者传递给一个函数或方法,这个字典会即会在赋值或调用发生时被拷贝。
2.如果字典实例中所储存的键(keys)和/或值(values)是值类型(结构体或枚举),当赋值或调用发生时,它们都会被拷贝。相反,如果键(keys)和/或值(values)是引用类型,被拷贝的将会是引用,而不是被它们引用的类实例或函数
varstudent2=student;字典赋值
(" student为:)\n student2为:student2 执行结果:
student为:[小华: 10002,小明: 10001]
student2为:[小华: 10002,0)">);//改变student中小明的value student2不会改变
执行结果:
student为: [小华: 10002,小明: 12345]
*/