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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 744919632 中级黑马   /  2015-12-14 18:43  /  589 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

集合与数组的区别?
        共性:
                集合与数组都是一个容器
       
        区别:
                数组:
                        长度是固定的
                        数组中存储的元素要求数据类型一致
                        数组中存储的元素可以是基本数据类型也可以是引用数据类型
                       
                集合:
                        长度是可变的
                        集合中存储的元素数据类型随意
                        集合中存储的元素只能是引用数据类型,如果想存储基本数据类型,把基本数据类型变成 对应的包装类
                       
--------------------------
Collecton集合的特点:
Collection集合的继承图
                Collection:
                        |- List 可以存储重复元素,有序的(元素存取顺序)
                                |- ArrayList
                                  |- Vector
                                |- LinkedList
                        |- Set 不能存储重复元素,无序的(元素存取顺序)
                                  |- HashSet
                                  |- TreeSet

                  方法:
                        添加功能:
                                boolean add(Object e) 把给定的对象添加到当前集合中
                                boolean addAll(Collection c)把给定的集合中的元素,添加到当前集合中
                          删除功能:
                                void clear() 清空集合中所有的元素
                                boolean remove(Object o) 把给定的对象在当前集合中删除
                                  boolean removeAll(Collection c)把定义集合中的元素,在当前集合中删除
                          判断功能:
                                  boolean contains(Object o) 判断当前集合中是否包含给定的对象
                                  boolean containsAll(Collection c) 判断当前集合中是否包含给定集合中的所有元素               
                                  boolean isEmpty() 判断当前集合是否为空
                                  boolean retainAll(Collection c)判断给定集合与当前集合中 是否有一样的元素
                          遍历功能:
                                  Iterator<E> iterator() 迭代器,用来遍历集合中的元素的
                          获取功能:
                                  int size() 返回集合中元素的个数
                          转换功能:
                                  Object[] toArray() 把集合中的元素,存储到数组中

  Iterator :  迭代器
                  Object next()返回迭代的下一个元素
                boolean hasNext()如果仍有元素可以迭代,则返回 true。

   List与Set集合的区别?
                  List:
                          它是一个有序的集合(元素存与取的顺序相同)
                          它可以存储重复的元素                       
  
                  Set:
                          它是一个无序的集合(元素存与取的顺序可能不同)
                          它不能存储重复的元素

   List集合中的特有方法
                  void add(int index, Object element) 将指定的元素,添加到该集合中的指定位置上
                  Object get(int index)返回集合中指定位置的元素。
                  Object remove(int index) 移除列表中指定位置的元素, 返回的是被移除的元素
                  Object set(int index, Object element)用指定元素替换集合中指定位置的元素,返回值的更新前的元素
  
                  ListIterator listIterator()返回此列表元素的列表迭代器

    出现并发修改异常的原因:
           在使用迭代器遍历集合的过程中,集合进行了元素的增删操作,导致了该问题的发生
   
   如何解决这个问题:
           方式1: 不使用迭代器
                   使用的集合中的add()方法,添加的元素在集合的末尾       
                   [大师兄, 二师兄, 三师兄, 校花]
   
           方式2: 在使用迭代器的时候,不使用集合中的功能进行元素的增删操作
                   使用的是ListIterator列表迭代器中的add()方法,添加的元素在 满足条件元素的后面添加
                   [大师兄, 二师兄, 校花, 三师兄]

ArrayList、Vector、LinkedList三者的区别?

        它们三者都是 List集合的子集合

        ArrayList:
                数据结构:  数组       
                线程不同步,说明代码执行效率高,有安全隐患
                元素的增删慢, 查找快
               
        Vector:
                数据结构: 数组
                线程同步的,说明代码执行效率低, 安全性好
                元素的增删慢, 查找快
       
        LinkedList:
                数据结构:链表
                线程不同步,说明代码执行效率高,有安全隐患
                元素的增删快, 查找慢
       

0 个回复

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