黑马程序员技术交流社区

标题: 集合小结1 [打印本页]

作者: 地狱里的帅灵魂    时间: 2015-8-24 20:34
标题: 集合小结1
对象数组

        用来存储对象的数组

        Student[] arr = new Student[3] ;

集合
        由于数组不能满足变化需求,那么java就给我们提供一个比较帅气的东西,这个东西就是集合
        数组和集合的区别:
                a: 长度的区别
                        数组的长度是不可变的
                        集合的长度是可变的
                b: 存储数据类型的区别
                        数组可以存储基本数据类型,也可以存储引用数据类型
                        集合只能存储引用数据类型
                c: 内容的区别
                        数组只能存储同一种数据类型的元素
                        集合可以存储多种数据类型的元素
               
        继承体现图:
               
                Collection
                        |- List
                                 |- ArrayList
                                 |- Vector
                                 |- LinkedList
                        |- Set
                                 |- HashSet
                                 |- TreeSet

        集合的功能概述:

                boolean add(E e)                                                        添加元素
                boolean remove(Object o)                                        删除指定的元素
                void clear()                                                                移除所有的元素
                boolean contains(Object o)                                        判断是否包含指定的元素
                boolean isEmpty()                                                        判断集合是否为空
                int size()                                                                        获取集合的长度
                boolean addAll(Collection c)                                添加一个集合的元素
                boolean removeAll(Collection c)                                删除一个集合的元素,删除一个以上算是删除
                boolean containsAll(Collection c)                        判断是否包含一个集合的元素, 包含所有的才算是包含
                boolean retainAll(Collection c)                                获取交集        A对B集合取交集,交集元素存储在A中,返回的boolean类型的值表示的意思是A集合是否发生改变
               
        集合的第一种遍历方式:        把集合转换成数组,然后在遍历数组(了解)
               
                Collection col = new ArrayList() ;
               
                col.add("张三");
                col.add("李四") ;
                col.add("王五") ;
               
                Object[] objs = col.toArray() ;

                for(int x = 0 ; x < objs.length ; x++ ){
                       
                        String s = (String)objs[x] ;

                        System.out.println(s + "---" + s.length());

                }

        集合的第二种遍历方式:        使用迭代器进行遍历(掌握********)
               
                Collection col = new ArrayList() ;
               
                col.add("张三");
                col.add("李四") ;
                col.add("王五") ;

                Iterator it = col.iterator() ;
               
                while(it.hasNext()){
                       
                        String s = (String)it.next() ;                                        // next方法的特点: 获取元素以后把指针向后移动一位

                        System.out.println(s + "---" + s.length());
                }

        List 集合特点:
               
                有序(存储和取出顺序) , 每一个元素都存在对应的索引值 , 元素可以重复
       
        特有的方法:

                void add(int index ,E element):                在指定的索引位置添加元素
                E remove(int index):                                删除指定索引处的元素
                E get(int index):                                        获取指定索引处的元素       
                E set(int index,E element):                        给指定索引处的元素重新赋值

        List集合的遍历方式:
                第一种遍历方式:        是把集合转换成数组
                第二种遍历方式:        使用迭代器进行变量
                第三种遍历方式: 使用get和size方法进行遍历

                        List list = new ArrayList() ;

                        list.add("张三") ;
                        list.add("李四") ;
                        list.add("王五") ;
                       
                        for(int x = 0 ; x < list.size() ; x++ ) {
                               
                                // 向下转型
                                String s = (String)list.get(x);
                               
                                // 输出
                                System.out.println(s + "---" + s.length());
                        }

        ListIterator: 列表迭代器,可以用来实现反向遍历
        ConcurrentModificationException: 原因迭代器遍历,集合修改集合
        解决方案:
                a: 使用 ListIterator 进行遍历,然后使用 ListIterator 修改元素
                b: 使用集合遍历,然后使用集合本身修改元素

数据结构
        概述: 就是存储数据的方式
        分类: 栈 , 队列, 数组 , 链表 , 树 , 哈希表

        特点:
                栈:                先进后出
                队列:        先进先出
                数组:        查询快 , 增删慢
                链表:        查询慢 , 增删块

List的3个子类特点:

        ArrayList:
                底层数据结构是数组,查询快,增删慢。
                线程不安全,效率高。
        Vector:
                底层数据结构是数组,查询快,增删慢。
                线程安全,效率低。
        LinkedList:
                底层数据结构是链表,查询慢,增删快。
                线程不安全,效率高。


复习可以用,共勉


作者: 壊亊唑侭    时间: 2015-8-24 20:41
底层数据结构是数组
作者: 地狱里的帅灵魂    时间: 2015-8-24 21:09
壊亊唑侭 发表于 2015-8-24 20:41
底层数据结构是数组

ArrayList和Vector底层都是数组




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2