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