List接口下的子类
List接口下的子类
接口
方法 | 描述 |
---|---|
boolean add(Object obj) | 添加一个对象数据 |
boolean addAll(Collection c) | 将一个集合中的所有对象添加到此集合中 |
void clear() | 清空此集合中的所有对象 |
boolean contains(Object o) | 检查此集合中是否包含o对象 |
boolean equals(Object o) | 比较此集合是否与指定对象相等 |
boolean isEmpty() | 判断此集合是否为空 |
boolean remove(Object o) | 在此集合中移除o对象 |
int size() | 返回此集合中的元素个数 |
Object[] toArray() | 将此集合转换成数组 |
List接口:有序,可重复(且存在索引标记)
List下有:ArratList Vector LinkedList 3个子类
List常用的一些排列算法
List常用算法
–void sort(List) 对List容器内的元素排序
void reverse(List) 对List容器内的对象进行逆序排列
void dill(List,object) 用一个特定的对象重写整个容器
void copy(List dest,List src) 将src容器内容复制到des容器
int binarySearch(List,object) 对于顺序的List容器,采用折半查找法查找特定对象
Set接口:无序,不可重复
Set接口没有提供额外的方法
Set容器实现类有HashSet、TreeSet
ArrayList和Vector的区别,主要包括两个方面
同步性:
Vector是线程安全的,也就是说它的方法直线是线程同步的,而ArrayList是线程不安全的,它的方法之间是线程不同步的
如果只有一个线程去访问集合那么使用ArrayList,他不考虑线程安全的问题,所以效率会高一些
如果是多个线程去访问集合,那么使用Vector
数据增长性:
ArrayList和Vector集合都有一个初始容量的大小,当元素的个数超过存储容量是,就需要增加ArrayList和Vector的存储空间,每次增加不是
增加一个而是增加多个,Vector是增加原来的两倍,ArrayList没有明文规定,但是从源码中可以看出增长原来的1.5倍
ArrayList和Vector可以设置初始的存储空间的大小,Vector还以设置增长空间大小,而ArrayList不可以。
Java LinkedList(链表) 类似于 ArrayList,是一种常用的数据容器。
与 ArrayList 相比,LinkedList 的增加和删除对操作效率更高,而查找和修改的操作效率较低。
以下情况使用 ArrayList :
- 频繁访问列表中的某一个元素。
- 只需要在列表末尾进行添加和删除元素操作。
以下情况使用 LinkedList :
- 你需要通过循环迭代来访问列表中的某些元素。
- 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。