集合与数组的区别?
共性:
集合与数组都是一个容器
区别:
数组:
长度是固定的
数组中存储的元素要求数据类型一致
数组中存储的元素可以是基本数据类型也可以是引用数据类型
集合:
长度是可变的
集合中存储的元素数据类型随意
集合中存储的元素只能是引用数据类型,如果想存储基本数据类型,把基本数据类型变成 对应的包装类
--------------------------
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:
数据结构:链表
线程不同步,说明代码执行效率高,有安全隐患
元素的增删快, 查找慢
|