说明:本节讲解包含多数据的集合对象
首先来看如何对list属性进行初始化
下面是set
最明显的区别是list允许里面的数据出现重复,而set不行他会自动去重,所以日常使用list或者set的时候根据数据是否允许出现重复的特性来选择到底是用set还是list
第三个map
最后学习注入properties
他和map最大的区别是只允许key和value是字符串类型的并不能像map在value的部分去引用其他的部分。
正是因为properties的key和value必须是字符串所以在实际项目应用时,也有许多公司会使用properties作为配置文件来保存诸如向数据库链接字符串或者用户名密码这些信息
创建s04
完成容器初始化的工作后创建
书写computer
写Company
公司有哪些房间
生成getset tostring
如何在ioc容器创建后自动的实例化company对象并填充这些信息呢?所有的工作都是在applicationContext。xml中完成的
直接运行
说明在运行时动态的为rooms属性创建了list对象包含了这些数据,但是这个list对象是什么类型呢?现在不清楚我们做一个断点来看一下
list有一个特点在使用时是允许重复的,如果不小心增加了两个2010
得到的结果也会重复
那如何有效的去重呢?我们可以考虑使用set来完成
改成set后重更新去设置get,set这样就可以基于set的特性去完成去重工作
重复的数据消失
之前说过set是无序的但是为什么在这里会按照顺序来进行提取呢?这个问题在于set这个实际类型上
linkedhashset的主要特点就是在内存中虽然数据是分散存储的,但是因为基于双向链表,能够保证数据在进行提取的时候,按照原先设置的顺序依次进行,正是基于这个特性spring才能保证set中他的顺序是有序的
他是一个map对象所以要进行map有关的配置,key代表了存储的键是那个,ref是对象引用
computer有四个属性,我们通过构造方法依次设置
这个方法还要创造新的bean有些麻烦,而这两块是分开的不方便我们管理,有没有简单的方法呢?
按照这个格式书写ioc就知道这里创建的bean是作为当前的这个map的value引用进行设置的。
确保这条bean只会运用在 这条数据中,不会被其他数据所关联
如果出现其他对象关联还得像之前那样额外增加bean对其设置id号,至于他各个id属性设置我们复制过来
这里map的类型是什么呢?我们来断点
linked开头就代表里面的数据是有序的
最后来设置info
得到properties那么如何提取我们所需要的结果呢
传入对应的key就可以返回对应的值
这里对如何通过ioc容器对list,set,map,以及properties进行设置