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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丶唯萌Pro 中级黑马   /  2017-10-24 00:58  /  650 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Collection集合
        ArrayList
                使用步骤:
                        创建集合对象
                        添加元素
                        遍历集合
        集合体系结构:
                由于不同的数据结构(数据的组织,存储方式),所以java为我们提供了不同的集合,
                但是不同的集合他们的功能都是相似的,不断的向上提取,将共性抽取出来,这就是集合体系
                结构形成的原因。
        体系结构:
                怎么学习?最顶层开始学习,因为最顶层包含了所有的共性
                怎么使用?使用最底层,因为最低层就是具体的实现
        Collection:
                Collection层次结构中的根接口,不能实例化,需要使用子类对象
                boolean add(E e): //添加元素
                void clear():  //清空集合
                boolean contains(Object o): //判断集合中是否包含指定元素
                boolean equals(Object o):
                boolean isEmpty()://是否为空
                boolean remove(Object o)://删除元素 删除成功返回true
                int size()://返回集合的长度
                Object[] toArray()://将集合转换成一个Object类型的数组
        集合的遍历方式
                1.toArray()
                        可以把集合转换成数组,然后遍历数组即可
                2.iterator()
                        可以返回一个迭代器对象,我们可以通过迭代器对象来迭代集合
                        Iterator:可以用于遍历集合
                                E next():返回下一个元素
                                boolean hasNext():判断是否有元素可以获取
        需求:
                判断集合中是否包含元素java,如果有则添加元素android
                        public static void main(String[] args) {
                        ArrayList<String> al = new ArrayList<String>();
                        al.add("java");
                        al.add("hello");
                        al.add("world");
                        boolean flag = false;
                        for (String string : al) {
                                if(string.contains("java")) {
                                        flag = true;
                                }
                        }
                        if(flag) {
                                al.add("android");
                        }
                        System.out.println(al);
                       
                }
                使用增强for直接对集合进行操作报异常.
                遍历集合在迭代器中操作集合抛出该异常.
                Exception in thread "main" java.util.ConcurrentModificationException:并发修改异常
                迭代器是依赖于集合的,相当于集合的一个副本,当迭代器在操作的时候,如果发现和集合
                不一样,则抛出异常
                解决方案:
                        不使用迭代器进行修改
                        在使用迭代器进行遍历的时候使用迭代器进行修改
        使用集合存储自定义对象并遍历:
                由于集合可以存储任意类型的对象,当我们存储了不同类型的对象,就有可能在转换的时候出现类型转换异常
                所以java为了解决这个问题,给我们提供了一种机制,叫做泛型

                泛型:是一种广泛的类型,把明确数据类型的工作提前到了编译时期,借鉴了数组的特点
                泛型好处:
                        避免了类型转换的问题
                        可以减少黄色警告线
                        可以简化我们代码的书写
                什么时候可以使用呢?
                        问API,当我们看到<E>,就可以使用泛型了
        for each:
                增强for循环,一般用于遍历集合或者数组
                格式:
                        for(元素的类型 变量 : 集合或者数组对象){
                                可以直接使用变量;
                        }
                注意:
                        在增强for循环中不能修改集合,否则会出现并发修改异常
        数组的特点:查询块,增删慢。
        链表:查询慢,增删块
                有链子连接起来的一堆结点
        结点:
                地址值,值,下一个节点地址值
        如何获取节点?
                只能遍历链表,然后一个一个查看
        栈:先进后出
        队列:先进先出
       
        Collection的子体系List:
                有序(存储和读取的顺序是一致的)
                有整数索引
                允许重复
        List的特有功能:
                void add(int index , E element):在指定索引位置添加元素
                E get(int index):根据索引返回元素
                E remove(int index):根据索引删除元素并返回
                E set(int index,E element):根据索引修改元素,并将修改前的元素返回.
                //增删改查
        List的常用子类:
                ArrayList:
                        底层是数组结构,查询块,增删慢
                LinkList:
                        底层结构是链表,查询慢,增删快
        如何选择使用不同的集合?
                如果查询多,增删少,使用ArrayList
                如果相反,则使用LinkList
                如果不知道使用什么,则使用ArrayList
        LinkList:
                void addFirst():将元素添加到索引为零的位置
                void addLast():将元素添加到索引为size()-1的位置
                E getFirst():获取索引为0的元素
                E getLast():获取索引为size()-1的元素
                E removeFirst():将元素为0的元素删掉并返回
                E removeLast():将元素为size(0-1的元素删除并返回

0 个回复

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