学习集合所做的一些笔记
数组的特点:
1.数组的长度是固定的
2.数组只能存储同一类型的数据
3.数组具有默认值
1.集合的长度是可变的
2.集合是用来存储对象的
3.集合不能存储基本数据类型
集合的体系结构:
Collection是作为集合的最顶层接口,其下可分为List和Set两个子接口,两个子接口下方则是一些现有类
首先接口不能实例化,通过Collection c =new ArrayList();能创建一个Collection对象,这是通过多态的形式来帮助不能实例化的抽象类以及接口创建一个对象。
下方是Collection所具备的一个通用的方法
boolean add(Object e): 向集合中添加元素
boolean addAll(Collection e): 向集合中添加元素
void clear():清空集合中所有元素
boolean contains(Object o):判断集合中是否包含某个元素
boolean isEmpty():判断集合中的元素是否为空
boolean remove(Object o):根据元素的内容来删除某个元素
int size():获取集合的长度
Object[] toArray():能够将集合转换成数组并把集合中的元素存储到数组中
迭代器
迭代器是集合的一种遍历方式,能够将集合中的元素取出
当使用for循环语句来判断Collection集合当中是否存在一个元素,如果存在集合就添加一个新的元素时,会出现一个并发性错误。
Collection集合添加或修改一个元素,集合与迭代器中的元素个数不匹配会发生并发性错误
1.如果是集合进行添加或者删除数据时,会出现并发修改异常
(集合添加或删除元素,与迭代器元素个数不匹配)
- 如果是迭代器进行删除时,删除的是做为条件的元素
(因此循环的结果,只能是从迭代器中删除目标元素)
list集合的迭代器可以解决Collection集合迭代器集合添加元素的并发修改异常问题
1.因为list集合迭代器能添加元素
特殊的地方:
如果Collection以倒数第二个元素作为条件判断, 集合删除元素的操作不会产生并发修改异常,但是如果是添加元素的操作,仍然会出现异常。
遍历方式:
1.Object[] obj = c.Array();
for循环获取
2.Iterator遍历
3.增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。
4.ste get 方法
for(i<set.size)
sout(set.get[i])
Link所存在的一些方法
void add(int index, E element) :将元素添加到index索引位置上
E get(int index) :根据index索引获取元素
E remove(int index) :根据index索引删除元素
E set(int index, E element):将index索引位置的的元素设置为element
/* LinkedList底层使用的是链表结构,因此增删快,查询相对ArrayList较慢
void addFirst(E e) :向链表的头部添加元素
void addLast(E e):向链表的尾部添加元素
E getFirst():获取链头的元素,不删除元素
E getLast():获取链尾的元素,不删除元素
E removeFirst():返回链头的元素并删除链头的元素
E removeLast():返回链尾的元素并删除链尾的元素
*/
Collections工具类当中所具有的方法
static int binarySearch(List list, Object key) 使用二分查找法查找指定元素在指定列表的索引位置
* static void copy(List dest, List src) :是把源列表中的数据覆盖到目标列(复制集合)
* static void fill(List list, Object obj) :使用指定的对象填充指定列表的所有元素
* //static void reverse(List list) :反转
* //static void shuffle(List list):傻否,随机置换
* //static void sort(List
* //static void swap(List list, int i, int j) :将指定列表中的两个索引进行位置互换