专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java编程基础中list的用法

Java编程基础中list的用法

更新时间:2020-07-09 16:11:50 来源:动力节点 浏览2173次

Java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中。List集合是有序的,Developer可对其中每个元素的插入位置进行精确地控制,可以通过索引来访问元素,遍历元素。在List集合中,我们常用到ArrayList和LinkedList这两个类。其中,ArrayList底层通过数组实现,随着元素的增加而动态扩容。而LinkedList底层通过链表来实现,随着元素的增加不断向链表的后端增加节点。ArrayList是Java集合框架中使用最多的一个类,是一个数组队列,线程不安全集合。它继承于AbstractList,实现了List,RandomAccess,Cloneable,Serializable接口。

ArrayList实现List,得到了List集合框架基础功能;

ArrayList实现RandomAccess,获得了快速随机访问存储元素的功能,RandomAccess是一个标记接口,没有任何方法;

ArrayList实现Cloneable,得到了clone()方法,可以实现克隆功能;

ArrayList实现Serializable,表示可以被序列化,通过序列化去传输,典型的应用就是hessian协议。

Java List的常用操作

list中添加,获取,删除元素;

添加方法是:.add(e);

获取方法是:.get(index);

删除方法是:.remove(index);按照索引删除;.remove(Object o);按照元素内容删除;

Java编程基础中list的用法

利用list中索引位置重新生成一个新的list(截取集合);

方法:.subList(fromIndex,toIndex);.size();该方法得到list中的元素数的和

Java编程基础中list的用法

去重复;

Java编程基础中list的用法

list中根据索引将元素数值改变;

注意.set(index,element);和.add(index,element);的不同;

Java编程基础中list的用法

List的子类

1、LinkedList类

LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。

注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:

Java编程基础中list的用法

2、ArrayList类

ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。

size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。

每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。

和LinkedList一样,ArrayList也是非同步的(unsynchronized)。

特点是:寻址容易,插入和删除困难;

3、Vector类

Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。

4、Stack类

Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。基本的push和pop方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。

Java编程基础中list的用法

以上就是动力节点java培训机构的小编针对“Java编程基础中list的用法”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>