美文网首页
5种"集合"注入方式

5种"集合"注入方式

作者: 煗NUAN | 来源:发表于2020-02-27 23:11 被阅读0次

    五种"集合"的注入方式

    • 数组 , 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);
        }
    }
    

    相关文章

      网友评论

          本文标题:5种"集合"注入方式

          本文链接:https://www.haomeiwen.com/subject/tdifhhtx.html