第二章:集合

一、集合

        1. 概念:一种操作便利的对象容器,存储多个对象,多数情况下可代替数组。

        2. 位置:所有集合的接口和相关实现类都是位于java.util 包中

        3. 每一种集合的学习都是从一下方面学习:

            集合接口的特点

            集合接口中方法

            集合接口对应的实现类

            集合的遍历方式

        4. 集合分类

        collection

                List

                Set

        Map集合

二、Collection集合体系

        1. 父接口:Collection接口

        (1)Collection接口中的特点:存储对象,即存储数据类型object

        (2)Collection接口中方法:

                boolean add(object obj):添加一个对象。【重点】

                int size():返回此集合中的所有对象。

                coid clear():清空此集合中的所有对象

                boolean contains(Object o):检查此集合中是否包含o对象

                boolean isEmpty():判断此集合是否为空

                boolean remove(object o):在此集合中移除o对象

                Object [ ] toArray():将此集合转换成数组

        (3)实现类:详见子接口

        (4)遍历 :详见子接口

        2. 子接口:LIst

        (1)LIst接口的特点:存储object类型的对象,有序、有下标,元素可以重复

                                             List下标范围是:0 - 集合元素个数-1(即 0 - size - 1)

        (2)常见方法:

                boolean add(Object obj)    :添加一个对象。    【重点】
                object get(int index)    // 返回集合中指定位置元素
                void add(int index,object o)    // 在index位置插入对象
                boolean addAll(int index,Collection c) :将c中元素一次性插入到集合中指定下标
                Objcet remove(int index,Object element)    // 替换index位置上的元素
                List subList(int fromIndex, int toIndex)    // 返回集合中指定部分的元素

        (3)实现类:ArrayList

        (4)遍历:

                        a. 下标遍历:

                                for(int i=0;i<list.size();i++){

                                        System.out.println(list.get(i));

                                }

                        b. forEach遍历:

                                for(数据类型 变量名:集合名){

                                        / / 可以通过变量名操作集合数据

                                }

        (5)泛型集合:强制要求集合中数据类型同意

                ArrayList<数据类型>  list=new  ArrayList<数据类型>();

                a. 前后数据类型一致

                b. 基本数据类型的泛型需要使用对应的包装类

        (6)不同实现类的区别:

                ArrayLIst:

                        底层用数据组实现,查询快,增删慢

                        JDK1.2提供,线程不安全,并发效率高

                Vector:

                        底层用数据组实现,查询快,增删慢

                        JDK1.0提供,线程安全,并发效率低

                LinkedList:

                        底层用链表实现,查询慢,增删快

                        JDK1.2提供,线程不安全,并发效率快

        3. 子接口:Set

        (1)Set接口的特点:用于存放任意object对象,无序、无下标、元素不能重复(元素内容不能重复)

        (2)方法:全部继承于 父接口 Collection

        (3)实现类:HashSet

                 注意:为保证存储在HashSet集合中对象内容不同,需要覆盖hashCode和equals方法的

        (4)遍历方式:forEach

        (5)实现类:LinkedHashSet:按照元素添加的顺序进行,无下标、元素不可以重复(和HashSet一致)

三、Map集合体系

        1. 特点:存储键值对(key-value),键:无序、无下标、元素不可以重复;值:无序、无下标、元素可以重复

        2. 方法:

                V put(K key,V value):往Map中存储一个键值对。如果key在map中已经存在,则新值覆盖旧值;如果key在map中不存在,则直接存储返回值为null。

                V remove(K key):根据键删除集合中对应的键值对,返回被删除的value。

                int size():获取集合中键值对的数量

                boolean containsKey(K key):判断map集合中是否包含key的键,返回true/false

                boolean containsValue(K Value):判断map集合中是否包含value的值。

        3. 实现类:HashMap

        4. 遍历:

        (1)键遍历:

                        Set<String> key=stus.keySet();  // 获取所有的键

                        // 通过遍历set集合获取每一个键

                        for(String key:keys){

                                Student stu=stus.get(key);        // 通过键获取对应的值

                        }

        (2)值遍历:

                        Collection<Student> cs=stus.values();        // 获取所有的值

                        // 通过遍历获取 集合中每个值

                        for(Student stu:cs){

                                System.out.println(stu);

                        }

        (3)键值对遍历:

                        Set<Map.Entry<String,Student>> kvs=stus.entrySet();        // 获取所有键值对

                        // 获取每个键值对

                        for(Map.Entry<String,Student> kv:kvs){

                                // 通过操作Entry获取对应的 键和值

                                String s1=kv.getkey();

                                Student stu=kv.getvalue();

                                System.out.println(s1+"-----"+stu);

                        }

        5. 不同实现类:

        (1)HashMap:JDK1.2版本,线程不安全,运行效率快;允许用null作为key或是vaule

        (2)Hashtable:JDK1.0版本,线程安全,并发效率慢;不允许null作为key或是value

        (3)LinkedHashMap:HashMap的子类,按照元素添加的顺序进行存储

        (4)Properties:Hashtable的子类,要求key和value都是String。通常适用于配置文件的读取

        (5)TreeMap:实现了SortedMap接口(是Map的子接口),可以对key自动排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值