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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐家誉 中级黑马   /  2015-6-30 01:32  /  685 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1:集合(理解)
        (1)java是一种面向对象语言,如果我们要针对多个对象进行操作,就必须对多个对象进行存储。
           而对多个元素进行存储,前面我们学习过数组,数组的弊端,长度固定。这样,数组将不能
           满足变化的要求。所以,java就提供了集合供我们使用。
        (2)集合的特点:
                1、长度可以发生改变
                2、只能存储对象
                3、可以存储多种类型对象(一般存储的还是同一种)
        (3)集合和数组的区别
                1、长度问题
                        数组固定
                        集合可变
                2、存储元素问题
                        数组可以是基本类型,也可以是引用类型。
                        集合只能是引用类型。
                3、是否同一类型
                        数组元素类型一致。
                        集合元素类型可以不一致。
        (4)集合体系的由来
                集合是存储多个元素的容器,但是,由于数据结构不同,java就提供了多种集合类。
                而这多种集合类有共性的功能,所以,通过不断的向上抽取,最终形成了集合体系
                结构。

                数据结构:数据存储的方式。

                程序 = 算法 + 数据结构

                Collection
                        |--List
                                |--ArrayList
                                |--Vector
                                |--LinkedList
                        |--Set
                                |--HashSet
                                |--TreeSet
        (5)如何学习和使用一个继承体系呢?
                学习顶层:因为顶层定义的是共性内容。
                使用底层:因为底层才是具体的实现。

2:Collection的功能(掌握)
        (1)Collection的功能(自己补齐中文意思)
                1、添加功能(掌握)
                        boolean add(Object obj):向集合中添加一个元素。
                        boolean addAll(Collection c):向集合中添加一个集合的元素。
                2、删除功能(掌握)
                        void clear():删除集合中所有的元素。
                        boolean remove(Object obj):删除集合中指定的元素。
                        boolean removeAll(Collection c):删除集合中指定的集合元素。 只要有数据删除,则返回true。
                3、判断功能(掌握)
                        boolean isEmpty():判断集合是否为空。
                        boolean contains(Object obj):判断集合是否包含指定的元素。
                        boolean containsAll(Collection c):判断集合是否包含指定的集合中的元素。只有所有数据包含了,才返回true。
                4、遍历功能(掌握)
                        Iterator iterator():迭代器。
                                hasNext():判断是否还有元素
                                next():获取下一个元素
                5、长度功能(掌握)
                        int size():获得集合的元素个数。
                6、交集功能
                        boolean retainAll(Collection c):判断集合中是否有相同的元素。
                                如果有两个集合A和B。A对B做交集。
                                A集合保存的是交集元素,B集合不发生改变。
                                返回值表示的是A集合是否发生过改变。
                7、转换功能
                        Object[] toArray():把集合变成数组。
        (2)迭代器的使用
                1、使用步骤
                        1、通过集合对象获取迭代器对象。
                        2、通过迭代器对象判断。
                        3、通过迭代器对象获取。
                2、迭代器原理
                        由于多种集合的数据结构不同,所以存储方式不同,所以,取出方式也不同。
                        这个时候,我们就把判断和获取功能定义在了一个接口中,将来,遍历哪种
                        集合的时候,只要该集合内部实现这个接口即可。
                3、迭代器源码
                        public interface Iterator
                        {
                                public abstract boolean hasNext();
                                public abstract Object next();
                        }

                        public interface Collection
                        {
                                public abstract Iterator iterator();
                        }

                        public interface List extends Collection
                        {
                                ...
                        }
                       
                        public class ArrayList implements List
                        {
                                public Iterator iterator()
                                {
                                        return new Itr();
                                }

                                private class Itr implements Iterator
                                {
                                        public boolean hasNext(){...}
                                        public Object next(){...}
                                }
                        }
        (3)集合的常见使用步骤:
                1、创建集合对象
                2、创建元素对象
                3、把元素添加到集合中
                4、遍历集合
                        1、通过集合对象获取迭代器对象。
                        2、通过迭代器对象判断。
                        3、通过迭代器对象获取。
        (4)Collection存储字符串和自定义对象并遍历。
                1、存储字符串
                        Collection c = new ArrayList();

                        //String s = "hello";
                        //c.add(s);
                        c.add("hello");
                        c.add("world");
                        c.add("java");

                        Iterator it = c.iterator();
                        while(it.hasNext())
                        {
                                String s = (String)it.next();
                                System.out.println(s);
                        }


                2、存储自定义对象(自己补齐)
                            Collection c=new ArrayList();
                            Student s1=new Student("林青霞",26);           
                            c.add("s1");
                     
                            Iterator it=c.iterator();
                            while(it.hasNext())
                              {
                                String s=(String)it.next();
                                System.out.println(s);
                              }

3:List的特有功能(掌握)
        (1)List的特点
                List是Collection接口下的一个子接口
                        特点:元素有序(指的是存储顺序和取出顺序是否一致),可重复。
                Set也是Collection接口下的一个子接口
                        特点:元素无序,唯一。

        (1)List的特有功能
                1、添加功能
                        void add(int index,Object obj): 在指定位置添加元素。
                2、删除功能
                        Object remove(int index): 根据指定索引删除元素,并把删除的元素返回
                3、修改功能
                        Object set(int index,Object obj):把指定索引位置的元素修改为指定的值,返回修改前的值。
                4、获取功能
                        Object get(int index): 获取指定位置的元素
                        int indexOf(Object obj): 返回指定元素在集合中第一次出现的索引。
                        ListIterator listIterator():
                5、截取功能
                        List subList( int fromIndex, int toIndex )截取集合。
        (2)List的遍历方式
                1、Iterator迭代器
                2、ListIterator迭代器(了解)
                3、普通for+get()
        (3)ListIterator迭代器
                ConcurrentModificationException并发修改异常
                ConcurrentModificationException
                ①:为什么出现这个异常:因为我们在用迭代器遍历的时候,通过集合对元素进行了操作
                ②:如何解决呢:
                        A:通过迭代器遍历的时候,我们用迭代器进行操作集合元素
                                ListIterator
                        B:普通for循环遍历集合的时候,我们通过集合对元素进行操作
       

评分

参与人数 1黑马币 +6 收起 理由
笨小点儿 + 6 很给力!

查看全部评分

13 个回复

倒序浏览
正好学到迭代器,非常不错的总结,学习了!
回复 使用道具 举报
支持总结发帖
回复 使用道具 举报
复习中.........
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
回味中...
回复 使用道具 举报
嗯。。学习了。。。。。。。。。
回复 使用道具 举报
我想进黑马
回复 使用道具 举报
水壶vs兔子 发表于 2015-6-30 09:07
正好学到迭代器,非常不错的总结,学习了!

哪一期的啊?
回复 使用道具 举报

加油  加油
回复 使用道具 举报
老乡,你总结的真不错那。顶一下
回复 使用道具 举报

哪期都不是,还是自学期!:P

点评

哦哦  发表于 2015-7-1 12:45
回复 使用道具 举报
总结的很好,加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马