Java基础学习总结(5)——List及其子类
来源:互联网 发布:平板打不开淘宝视频 编辑:程序博客网 时间:2024/06/07 04:50
List api如下:
boolean
add(E e)
向列表的尾部添加指定的元素(可选操作)。
void
add(int index,E element)
在列表的指定位置插入指定元素(可选操作)。
boolean
addAll(Collection<? extendsE> c)
添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序(可选操作)。
boolean
addAll(int index,Collection<? extends E> c)
将指定 collection 中的所有元素都插入到列表中的指定位置(可选操作)。
void
clear()
从列表中移除所有元素(可选操作)。
boolean
contains(Object o)
如果列表包含指定的元素,则返回 true。
boolean
containsAll(Collection<?> c)
如果列表包含指定 collection 的所有元素,则返回 true。
boolean
equals(Object o)
比较指定的对象与列表是否相等。
E
get(int index)
返回列表中指定位置的元素。
int
hashCode()
返回列表的哈希码值。
int
indexOf(Object o)
返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。
boolean
isEmpty()
如果列表不包含元素,则返回 true。
Iterator<E>
iterator()
返回按适当顺序在列表的元素上进行迭代的迭代器。
int
lastIndexOf(Object o)
返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。
ListIterator<E>
listIterator()
返回此列表元素的列表迭代器(按适当顺序)。
ListIterator<E>
listIterator(int index)
返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。
E
remove(int index)
移除列表中指定位置的元素(可选操作)。
boolean
remove(Object o)
从此列表中移除第一次出现的指定元素(如果存在)(可选操作)。
boolean
removeAll(Collection<?> c)
从列表中移除指定 collection 中包含的其所有元素(可选操作)。
boolean
retainAll(Collection<?> c)
仅在列表中保留指定 collection 中所包含的元素(可选操作)。
E
set(int index,E element)
用指定元素替换列表中指定位置的元素(可选操作)。
int
size()
返回列表中的元素数。
List<E>
subList(int fromIndex, int toIndex)
返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。
Object[]
toArray()
返回按适当顺序包含列表中的所有元素的数组(从第一个元素到最后一个元素)。
<T> T[]
toArray(T[] a)
返回按适当顺序(从第一个元素到最后一个元素)包含列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。
List的两个主要子类为:ArrayList和LinkedList,他们的主要区别如下:
般大家都知道ArrayList和LinkedList的大致区别:
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
ArrayList的内部实现是基于基础的对象数组的,因此,它使用get方法访问列表中的任意一个元素时(random access),它的速度要比LinkedList快。LinkedList中的get方法是按照顺序从列表的一端开始检查,直到另外一端。对LinkedList而言,访问列表中的某个指定元素没有更快的方法了。
,当一个元素被加到ArrayList的最开端时,所有已经存在的元素都会后移,这就意味着数据移动和复制上的开销。相反的,将一个元素加到LinkedList的最开端只是简单的未这个元素分配一个记录,然后调整两个连接。
三.总结
ArrayList和LinkedList在性能上各有优缺点,都有各自所适用的地方,总的说来可以描述如下:
1.对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是统一的,分配一个内部Entry对象。
2.在ArrayList的中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。
3.LinkedList不支持高效的随机元素访问。
4.ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间
可以这样说:当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。
- Java基础学习总结(5)——List及其子类
- JAVA学习第三十四课 (常用对象API)—List集合及其子类特点
- Java基础---集合(Collection接口、List接口及其子类、增强for)
- Java基础学习笔记16——(List的子类,泛型类,增强for循环,静态导入,可变参数)
- OC基础学习——NSArray及其子类NSMutableArray的创建及其常用方法
- Java基础学习笔记(七)Set接口及其实现子类
- Java基础---集合(Set接口及其子类、Map接口及其子类)
- JavaSE----API之集合(Collection、List及其子类、Set及其子类、JDK1.5新特性)
- 集合一(Collection、Iterator及其子类、List及其子类)
- 【编程语言】java--List及其子类
- 【编程语言】java--List及其子类
- Java基础学习总结(29)——浅谈Java中的Set、List、Map的区别
- Java基础学习总结(13)---map、list总结
- LIST接口及其子类
- JAVA学习第三十九课(常用对象API)— Map集合及其子类对象(集合使用技巧)
- java基础学习笔记——List
- Java_基础—List的三个子类的特点
- java中API:集合框架1(Collection,List,Set及其子类和迭代器的应用)
- PL SQL Developer 使用总结
- QT5.7集成到VS2015的一点小问题
- 字符编码笔记:ASCII,Unicode和UTF-8
- C++类
- 第八周 项目2 建立链串的算法库
- Java基础学习总结(5)——List及其子类
- TCP与UDP在socket编程中的区别
- 如何让你的paper被拒
- 第八周--项目5-计数的模式匹配
- Spring中所用到的设计模式
- 第七周项目五 排队看病模拟
- 【第八周项目1- 建立顺序串的算法库】
- 事件处理程序
- 在安装apache2,php,mysql开发环境中的一些问题