Java是一种面向对象语言,如果我们要针对多个对象进行操作,就必须对多个对象进行存储。而数组长度固定,不能满足变化的要求。所以,java提供了集合。
集合与数组的区别
集合的长度可变,存储元素是引用类型,元素类型可以不一致;数组的长度是固定的,存储元素基本类型或者引用类型,元素必须保证一致。
JAVA中集合类的关系图
集合作为一个容器可以存储多个元素,但是由于数据结构的不同,java提供了多种集合类。将集合类中共性的功能,不断向上抽取,最终形成了集合体系结构。
collection是List和Set的父接口
collection基本功能
1:添加功能
boolean add(Object obj):
添加一个元素
boolean addAll(Collection c):
添加一个集合的元素
2:
删除功能
void clear():
移除所有元素
boolean remove(Object o):
移除一个元素
boolean removeAll(Collection c):
移除一个集合的元素
(
是一个还是所有
)
3:
判断功能
boolean contains(Object o)
:判断集合中是否包含指定的元素
boolean containsAll(Collection c)
:判断集合中是否包含指定的集合元素
(
是一个还是所有
)
boolean isEmpty()
:判断集合是否为空
4:
获取功能
Iterator iterator()用来获取集合中每一个元素
5:
长度功能
int size():
元素的个数
6:交集功能
boolean retainAll(Collection c):
两个集合都有的元素
?
7
:把集合转换为数组
Object[] toArray()
(引申:数组转集合)
List
有序的集合,允许重复元素存在
list集合特有功能
1.
添加功能
void add(int index,Object element):
在指定位置添加元素
2.获取功能
Object get(int index):
获取指定位置的元素
3.列表迭代器
ListIterator listIterator()
:
List
集合特有的迭代器
4.删除功能
Object remove(int index)
:根据索引删除元素
,
返回被删除的元素
5.修改功能
Object set(int index,Object element):
根据索引修改元素,返回被修饰的元素
List:ArrayList类和LinkedList类
ArrayList
线程不安全,查询速度快。底层数据结构是数组结构
LinkedList
线程不安全,增删速度快。底层数据结构是列表结构
Set
主要有两个常用的实现类:HashSet 类和 TreeSet类
取出元素的方法只有迭代器。不可以存放重复元素,元素存取是无序的。
HashSet:线程不安全,存取速度快。
依赖的是元素的hashCode方法和euqals方法来保证元素的唯一性
TreeSet:线程不安全,可以对Set集合中的元素进行排序。它的排序是如何进行的呢?通过compareTo或者compare方法中的来保证元素的唯一性。元素是以二叉树的形式存放的。
迭代器 Iterator(集合独有的遍历方式)
while
for
注意事项:
1.不能实例化的。只能接收集合类对象调用自己的iterator方法来生成的Iterator对象
2.是集合独有的遍历方式
3.迭代器Iterator有for,while两个个方法
4. 用来遍历集合时,需要hasNext()方法和next()方法配合使用
5.在遍历的过程中,不允许对集合进行增删操作。如果想要对集合进行删除操作,也必须调用迭代器的remove()方法
6.不要多次使用next