什么是集合
存储对象的容器,面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,存储对象,集合是存储对象最常用的方法之一。
集合和数组的区别
数组和集合类都是容器,那么他们的区别是什么呢?
1、 数组长度是固定的,集合长度是可变的
2、 数组中可以存储基本数据类型,集合只能存储对象
3、 数组中存储数据类型是单一的,集合中可以存储任意类型的对象
集合分类单列集合(Collection)和键值对类型的集合(Map),在集合中存放的都是对象的引用。
在Collection接口下有两个子接口List和Set。其中,List是按照存储顺序来存储的,Set是不按照存储顺序来存储的,而且不可重复。
在实现List的类中常用的有ArrayList和LinkedList和Vactor。
ArrayList特性
ArrayList中底层是采用数组实现的。
1、 因为数组在内存中存储地址是连续的,所以查询速度快。所以,ArrayList的特性之一就是查询速度快
2、 因为ArrayList是数组实现的,在增和删的时候会牵扯到数组的增容和拷贝问题,所以速度慢。
所以ArrayList的特性就是查询快,增删慢。
LinkedList特性
LinkedList底层是采用链表实现的
1、 由于LinkedList在内存中地址不连续,需要一个元素记住下一个元素的位置,虽然也有角标,但是因为内存地址不连续,查找的时候,需要从头往下找。所以查询速度必ArrayList慢。
2、 因为LinkedList底层是采用链表实现,所以新增和删除元素,只涉及到该元素的前后两个元素的变化,所以增删块。
Vector特性
Vector描述的是一个线程安全的ArrayList。
ArrayList在单线程的时候效率高,但是当涉及到多线程的时候,可能会出现线程安全问题,所以为了维护线程安全,所以效率低。
以上总结了其原理性的东西,如果需要知道如何进行运用,可以查看API文档。