Collection 是java中集合的总接口
Collection包含的子接口有
1. List(接口)有序可重复
List接口包含的实现类:
ArrayList 里面写好了List接口所有的抽象方法都已经实现好了,功能写好 底层是数组
LinkedList 里面有自己独有的方法 底层是链表
Vector
2. Set(接口) 无序不可重复
Set接口包含的实现类
HashSet Set的实现类 底层是Hash算法
TreeSet Set的实现类 底层是二叉树
Collection中主要的方法有
增:
boolean add(E e); 添加数据的
boolean addAll(Collection<? extends E> c); 将一个集合添加到另外的一个集合中
删:
boolean remove(Object obj); 删除指定的元素
boolean removeAll(Collection<?> c)删除指定集合中包含的所有此集合的元素(可选操作)
void clear(); 清空集合中所有的元素
查:
int size(); 集合中元素的个数
Object[] toArray();将集合转为数组
boolean contains(Object obj);在集合中是否包含一个obj元素
boolean containsAll(Collection<? extends E> c); 判断一个集合是否是另外一个结合的子集合
boolean isEmpty(); 判断一个集合是否为空
List接口中主要的方法
增:
boolean add(int index, E e); 在指定索引下标的位置插入一个数据
boolean addAll(int index, Collection<? extends E> c);
在指定下标为位置 插入另外一个集合
删:
E remove(int index); 通过索引删除数据,返回的是被删除的元素
改:
E set(int index, E e);在指定下标的元素 被别的元素替代,返回值是被替代吗的元素
查:
size()
toArray()
contains()
isEmpty()
E get(int index); 获取指定的下标的元素
int indexOf(Object obj); 通过元素获取指定的下标的
int lastIndexOf(Object obj);获取指定元素的最后一次出现的位置
List<E> subList(int startIndex, int endIndex); 截取集合中的一段
ArrayList和LinkedList的区别
1.ArrayList底层是数组,LinkedList底层是链表
2.ArrayList在随机取数据的时候效率高于LinkedList
3.ArrayList在删除 和插入 的时候效率低于LinkedList
4.ArrayList会自己扩容 需要预留一定空间的
5.LinkedList 是存储数据的节点的信息以及节点信息的内存的指针
set集合
set集合也是用来存储数据的
set集合父接口collection接口
set存储数据的时候是效果是无序的不可重复的
set接口下面有两个实现类
hashset:底层是hash值进行存储的,如果hash值一样的就无法催到集合中
treeset:底层是二叉树,对存入的数据进行自然排序