A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张海旭 中级黑马   /  2015-5-29 22:07  /  282 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.回顾
        Date类
                构造方法:
                        Date()
                        Date(long time)
                方法:
                        long getTime()
                        void setTime(long time)
                       
        SimpleDateFormat类
                格式化日期 或者 解析字符串(必须是日期格式的)
                SimpleDateFormat sdf = new SimpleDateFormat("模式");
                String --> Date
                        sdf.parse(String str)
                       
                Date --> String
                        sdf.format(Date d)
       
        Calendar 类
                get(int filed)
                set()
                add(int filed, int in) -- 对指定的字段做增加或减少的操作。
       
        对象数组
                存储引用类型数据的数组。
               
2. 数组与集合的比较
                数组特点:
                        1)长度固定
                        2)可以存储基本和引用类型
                        3)类型必须是一致的
                集合特点:
                        1)长度可变
                        2)仅可以存储引用类型
                        3)集合存储的引用类型可以是不同类型的
               
3.集合体系的学习方法
       
        学顶层 -- 共性内容
        用底层 -- 具体实现

        单列集合体系:
                Collection(单列集合顶层接口)
                        List
                                ArrayList
                                Vector
                                LinkedList
                        Set
                                HashSet
                                TreeSet

4.Collection接口的功能
        添加:
                boolean add(Object obj) -- 添加一个元素,返回添加是否成功
                boolean addAll(Collection c) -- 添加一个集合的元素, 返回值表示调用方法的集合是否发生改变
       
        删除:
                void clear() -- 清除集合中所有元素
                boolean remove(Object obj) -- 移除指定元素,返回是否移除成功
                boolean removeAll(Collection c) -- 移除一个集合的元素, 返回值表示调用方法的集合是否发生改变
               
        判断:
                boolean isEmpty() -- 空集合
                boolean contains(Object obj) -- 判断是否包含指定元素
                boolean containsAll(Collection c) -- 是否包含指定的集合中的所有元素 全部包含才返回true
       
        长度:
                int size() -- 集合的长度
               
        交集:
                boolean retainAll(Collection c) -- 交集
                        A对B做交集。B不改变,A保存两个集合的交集部分。
                        返回值表示A是否发生改变
       
        转数组:
                Object[] toArray()
               
        迭代器
                Iterator iterator() -- 获取迭代器
       
        获取字符串、数组、集合的长度:
                字符串:length()
                数组: length属性
                集合:size()
       
5. 迭代器的实现原理
        Iterator接口:
                不同的集合,数据结构不一样,那么数据的存储和获取方式就不一样。
                也就是说迭代器获取不同集合中的数据的方式是变化的,所以定义为实现类不合适。
               
                但迭代器遍历集合,肯定都要有判断是否有元素,以及获取元素的功能。
                那么就把这些功能抽取出来,定义到接口中。
               
        具体的实现类又是以内部类的方式实现的。
                又因为集合的数据结构,集合本身最清楚。所以针对不同的集合,迭代器以内部类的方式实现。
                通过调用集合的方法,返回可以操作该集合的迭代器。
       
6. List体系
                List
                        元素有序(存储和取出的顺序),可重复
                Set
                        元素无序,唯一
       
        List体系特有功能
                添加:
                        void add(int index, Object obj)
                                在列表的指定位置插入指定元素
                删除:
                        Object remove(int index)
                                删除指定索引处的元素,返回被删除的元素
                修改:
                        Object set(int index, Object obj)
                                用指定元素替换列表中指定位置的元素,返回被替代的元素
                获取:
                        Object get(int index) -- 获取指定索引出的元素
                        int indexOf(Object obj) -- 获取指定元素在集合中第一次出现的索引
                        ListIterator -- 列表迭代器
                截取:
                        List subList(int fromIndex, int toIndex)
                                截取列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分
               
        异常:
                ConcurrentModificationException 并发修改异常
                产生原因:通过迭代器遍历集合的时候,又通过集合改变了集合的结构
                                因为迭代器是通过集合获得的,而增加元素以后,集合改变了,但迭代器没有改变。
                                这种情况就是不允许的。
                解决方案:
                        1)全部通过集合来操作:使用普通for循环,这时候元素添加到最后。
                        2)全部通过List体系特有的迭代器实现:ListIterator。这时元素添加到遍历到的那个元素后面。
       
       
       
       
       
       
       
       
       
       
       
               
               
               

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马