五种"集合"的注入方式
-
数组 , List , Set , Map , properties
-
Map
- Map 是键值对,键 Key 是唯一不能重复的,一个键对应一个值,值可以重复。
- TreeMap 主要用于去重,是比较元素的大小进行排序的 有序
- HashMap 是无序的,默认大小是16,到达加载因子的界限后,默认扩容一倍
- Map 中可以将 Key 和 Value 单独抽取出来,其中 KeySet()方法可以将所有的 keys 抽取成一个 Set,而 Values()方法可以将 map 中所有的 values 抽取成一个集合。
-
Set
- 主要用于去重且无序(存储无序,内容有序),只能用 Iterator 实现单项遍历, Set 中没有同步方法,set 中最多包含一个 null 元素,
-
List
- 有序的可重复集合,可以在任意位置增加删除元素,用 Iterator 实现单向遍历,也可用ListIterator 实现双向遍历。
-
Properties类是HashTable(实现了Map接口)的子类。HashTable是同步的。 该类主要用于读取Java的配置文件, 是以键值对的形式进行参数配置的
-
注意
- List集合的add方法的返回值是true,并且只能是true
- map集合的put方法的返回结果:如果key值不存在,则返回null,若key存在,则返回原先被替换掉的value值
- set集合的map方法的返回值,存储时若key存在则返回true,反之则返回false
编写集合的汇总类 : Collection.java
public class Collection {
private String[] arrays;
private List<Object> list;
private Set<String> set;
private Map<String,String> map;
private Properties properties;
public String[] getArrays() {
return arrays;
}
public void setArrays(String[] arrays) {
this.arrays = arrays;
}
public List<Object> getList() {
return list;
}
public void setList(List<Object> list) {
this.list = list;
}
public Set<String> getSet() {
return set;
}
public void setSet(Set<String> set) {
this.set = set;
}
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
public Properties getProperties() {
return properties;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
@Override
public String toString() {
final StringBuffer sb = new StringBuffer("Collection{");
sb.append("arrays=").append(arrays == null ? "null" : Arrays.asList(arrays).toString());
sb.append(", list=").append(list);
sb.append(", set=").append(set);
sb.append(", map=").append(map);
sb.append(", properties=").append(properties);
sb.append('}');
return sb.toString();
}
}
集合注入的配置文件 : coll.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="stu" class="com.yanm.bean.Student">
<property name="sid" value="007" /> <!--0开头默认是八进制-->
<property name="name" value="张三" />
<property name="score" value="98" />
<property name="sex" value="false" />
<property name="age" value="18" />
</bean>
<bean id="coll" class="com.yanm.collection.Collection" >
<!--数组的注入-->
<property name="arrays"> <!--name属性是arrays-->
<array> <!--数组注入需要用到arrays标签包裹-->
<value>刘备</value>
<value>刘备</value> <!--数组内容可以重复-->
<value>关羽</value>
<value>张飞</value>
<value>赵云</value>
</array>
</property>
<!--list集合的注入-->
<property name="list"> <!--name属性是list-->
<list> <!--list集合注入需要用到list标签包裹-->
<value>刘备</value>
<value>刘备</value> <!--list集合内容可以重复-->
<value>关羽</value>
<ref bean="stu" /> <!--list集合存储对象时,用ref-->
</list>
</property>
<!--set集合的注入-->
<property name="set"> <!--name属性是set-->
<set> <!--set集合注入需要用到set标签包裹-->
<value>刘备</value>
<value>刘备</value> <!--set集合不能存储重复的内容-->
<value>张飞</value>
<value>赵云</value>
</set>
</property>
<!--map集合的注入-->
<property name="map"> <!--name属性是map-->
<map> <!--map集合注入需要用到map标签包裹-->
<!--map集合注入时,采用entry标签的key和value形式-->
<entry key="刘备" value="孙尚香" />
<entry key="刘备" value="小乔" /> <!--覆盖孙尚香-->
<entry key="赵云" value="大乔" />
<entry key="null" value="null" /> <!--map可以存储null值-->
</map>
</property>
<!--properties的注入-->
<property name="properties"> <!--name属性是properties-->
<props> <!--properties注入需要用到props标签包裹-->
<prop key="url">jdbc:mariadb://localhost:3306/shop</prop>
<prop key="driver">org.mariadb.jdbc.Driver</prop>
<prop key="uname">root</prop>
<prop key="passwd">root</prop>
</props>
</property>
</bean>
</beans>
单元测试 : CollectionTest.java
public class CollectionTest {
@Test
public void collTest(){
ApplicationContext ac=new ClassPathXmlApplicationContext("coll/coll.xml");
Collection collection=ac.getBean("coll",Collection.class);
System.out.println(collection);
}
}
网友评论