想要存储多个对象我们学习过的可以使用数组,但是如果存储的对象个数会不断变化的话,用数组就不合适了.因为数组存储的数组是定长的.
所以java中提供了集合类,让我们更方便的存储变长个数的对象.
集合和数组的最大区别是:
数组的长度是固定的,但集合的长度是可变的.
数组只能存储相同类型的数据,而集合能够存储不同类型的数据.
集合按照存储结构可以分成俩类:
1、Collection单列集合:用于存储一系列符合某种规则的元素
子接口:List、Set.
List中可以有重复的元素,并且List类中带有索引,可以通过索引精确得操作集合中的元素
2、Map双列集合:用于存储有映射关系的数据,有主键关系,就像是Python的字典.
子接口:HashMap、TreeMap
Collection接口:
是所有单列集合类的父接口,有一些单列集合(List 、Set)通用的方法:
用于增加数据:
add(E e):添加成功返回True,失败返回False
addAll(Collection c) 将参数集合中的元素添加到调用对象集合中.
用于删除数据:
clear():移除集合所有的元素
remove(Object o):删除集合中指定的元素
removeAll(Collection o):删除调用集合中的o集合中的所有元素
retainAll(Collection o):保留调用集合中与集合o中元素相同的元素,其他全部删除
用于查看:
size() :查看集合元素的个数
用于判断:
isEmpty():判断集合是否为空
contains(Object o):判断调用集合元素中是否有o对象
containsAll(Collection c):判断集合中是否存在有c集合
Collection的子接口:List类
常用方法:
用于增加:
void add(int index,E element):将E元素添加到集合的index位置
boolean addAll(int index,Collection c):将集合c中的元素添加到调用集合的index处,如果失败会返回false,成功会返回true
用于获取:
Object get(int index):获取调用集合中index位置的元素
indexOf(Object o):获取调用集合中对象中o对象出现的位置索引值
lastIndexOf(Object o):获取调用集合对象中o对象最后一次出现的位置索引值
List subList(int fromIndex,int toIndex):返回调用集合中位置索引值为fromIndex到toIndex值的所有元素,返回值为集合.
用于修改:
set(int index,E element) 将索引值为index的元素替换成element对象,并将替换后的元素返回.
List接口有俩个常用实现类,
ArrayList
当ArrayList的容量不够时,会自动增长为原来的1.5倍.在内存空间的地址是连续的,所以ArrayList数据查找速度快,但是增删数据慢.
ArrayList的大多数常用方法都是从Collection和List那继承来的,就不再介绍了.
LinkedList
LinkedList和ArrayList相反,虽然查询速度慢,但是增加和删除元素快,因为LinkedList类底层是用链表来实现的,
每次查找元素需要从头往下找.
常用方法:
void addFirst(Object o) :将指定元素插入到此列表的开头
void addLast(Object o):将制定元素插入到此列表的结尾
Object getFirst():获取列表第一个元素
Object getLast():获取列表最后一个元素
Object removeFirst():移除并返回此列表的第一个元素
Object removeLast():移除并返回此列表的最后一个元素
Iterator迭代器
为了方便处理集合中的元素,提供了一些方法来处理集合中的元素.
就是Iterator了
Iterato迭代器获取:(使用集合自带的iterator方法)
Iterator i=集合对象.iterator();//获得自身的迭代器
常用方法:
boolean hasNext() :检查是否还有元素可以迭代,如果有则返回true,无返回false
next() :返回迭代的下一个元素
remove():删除迭代器返回的最后一个元素,从Iterator指向的collection中.
Iterator常与while语句配合使用:
while(iterator.hasNext()) { System.out.println(itrator.next()); }
Collection的另一个子接口:Set
Set与List不同的是:Set存储数据是无序的,并且存入的数据是不可重复的(按照某种规则)
Set有俩个实现类:
HashSet:根据对象的哈希码值来确定元素在集合中的存储位置,所以具有良好的存取和查询能力
TreeSet:已二叉树的方式来存储元素,他可以实现对集合中的元素进行排序.