【一、集合框架】
1.<集合框架简介>:
数据过多可以用对象进行存储,对象过多可以用集合来进行存储。
然而,存储数据的方式(数据结构)各有不同,所以存储的容器也就分为多种,从而,形成了集合框架这一体系。
2.<Collection方法>:
Collection 表示一组对象,这些对象称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。
3.<迭代器>:
集合框架中提供了一个内部类专门操作集合中的元素,这个内部类就是迭代器。
【二、集合框架 List】
1.<ArrayList特有方法>
凡是可以操作下标的方法,都是该特有的方法。
如下:(index-下表)
增
Add(index,element)
Add(index,Collection)
删
Remove(index)
改
Set(index,element)
查
Get(index)
subList(from,to)
listIterator()
index(element)
2.<特有迭代器>
list集合所特有的迭代器:ListIterator是Iterator的子接口
在迭代时,不可以通过集合对象的方法操作集合中的元素;
因为会发生并发修改异常(ConcurrentModificationException)。
所以,在迭代时,只能通过迭代器来操作元素,课时Iterator的方法是有限的,Iterator只提供了判断、取出、删除的操作。如果想要有其他的操作,如添加、修改等,就需要使用其子接口ListIterator,该接口只能list集合的listIterator方法来获取。
3.<具体对象特点>
Collection
List 有序 元素可重复 该集合体系有索引
Set 无序 元素不可重复
Arraylist 数组结构 增删慢,查询快 有连续下标 线程不同步 增长因子为 1.5 10
vector 数组结构 增删改查都慢 有连续下标 线程同步 增长因子为 2 10
linkedlist 链表结构 增删快,查询慢 无连续下标
【三、集合框架 Vector】
枚举 
【四、集合框架 LinkedList】
链表的数据结构
特有方法 :
addFirst();
addLast();
获取元素但是不删除元素,如果集合中没有元素,会出现NoSuchElementException :
getFirst();
getLast();
获取元素的同时会删除元素,如果集合中没有元素,会出现NoSuchElementException:
removeFirst();
removeLast();
在jdk1.6出现了替代方法:
offerFirst()
offerLast()
peekFirst();
peekLast();
获取元素的同时会删除元素,如果集合中没有元素,会返回null
pollFirst();
pollLast();
由于是链表结构,当前节点能够记住上一个节点、以及下一个节点,所有有带First、last的方法存在。
<模拟队列以及堆栈>:
堆栈:先进后出 子弹夹
队列:先进先出 水管
【五、集合框架ArrayList】
1.<判断list 集合中元素是否相同>
依据的是元素的equals方法:
Contains调用了equals
Remove调用了equals
2.<字符串去重>
list中存储的是字符串,而string的equals方法就是比的字符串的值
引用数据类型去重
(以人为对象,有姓名、年龄属性)
思路:
-
将原有的集合遍历
-
遍历后的元素需要存放到新的集合中
-
存放前做一个字符串的判断
步骤:
-
1.实例化一个新集合
-
2.遍历出之前集合里面的所有元素
-
3.边遍历边判断,如果新集合里面的元素与旧集合里面的元素不相等, 就将该元素加入新集合。
底层源码:
集合list中remove方法调用时,调用了equals方法验证
来源:CSDN
作者:止南
链接:https://blog.csdn.net/qq_44641053/article/details/90349103