List
发布日期:2021-06-27 12:55:56
浏览次数:40
分类:技术文章
本文共 3096 字,大约阅读时间需要 10 分钟。
文章目录
List接口
List 是Collection 的子接口,里面的所有内容都是允许重复的。
List接口的定义:
public interfaceextends Collection
List接口的方法如下:
而List接口有如下几个实现类:- ArrayList
- Vector
- LinkedList
ArrayList
ArrayList 是List 接口的子类,此类的定义如下:
public class ArrayListextends AbstractList implements List ,RandomAccess,Cloneable,Serializable
该类继承了AbstractList类。而AbstractList是List接口的子类。AbstractList是个抽象类。
ArrayList
使用的是数组结构,这个数组是Object类型的,默认容量大小为10
**特点:**对于增加删除操作较慢,查找较快。
构造器
ArrayList() 构造一个初始容量为10的空列表ArrayList(int initialCapacity) 构造具有只当初始容量的空列表ArrayList(Collection c) 按照集合的迭代器返回的顺序构造一个包含指定集合元素的列表
package Demo2;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;public class Demo1 { public static void main(String[] args) { //设置长度为15 ArrayListdata = new ArrayList<>(15); //添加元素 for (int i = 0; i < 10; i++) { data.add(i); } //将ArrayList实例的容量设置为集合的当前大小,最小化ArrayList的容量 data.trimToSize(); System.out.println("原始数组:" + data); Collections.reverse(data); System.out.println("反转数组:" + data); //data.sort(Comparator.naturalOrder()); Collections.sort(data); System.out.println("升序数组:" + data); //定制排序用法 Collections.sort(data, new Comparator () { @Override public int compare(Integer o1, Integer o2) { //o2-o1>0,如果指定数大于参数,返回1;指定数小于参数,返回-1;相等,返回0. return o2.compareTo(o1); } }); System.out.println("定制后的排序数组"+data); data.remove(9); System.out.println(data); }}
Vector
Vector也是List接口的子类。
public class Vectorextends AbstractList implements List ,RandomAcces,Cloneable,Serializable
构造方法:
Vector() 构造一个空向量,使其内部数据数组的大小为10,其标准容量增量为零Vector(int initialCapacity) 构造一个具有初始容量且容量增量为零的空向量Vector(int initialCapacity,int capacityIncrement) 构造具有指定初始容量及容量增量的空向量Vector(Collection 按照集合的迭代器返回的顺序构造一个包含指定集合元素的向量
public class VectorDemo{ public static void main(String[] ages){ //利用构造方法创建 Vector v = new Vector(4); //利用add方法添加 v.add("Test0"); v.add("Test1"); //删除元素 //根据索引删除 v.remove(1); //根据内容删除 v.remove("Test0"); //获得存取的元素的个数 int size = v.size(); System.out.println("size="+size); //遍历 for(int i =0;i
Vector与ArrayList的区别:
区别 | ArrayList | Vector |
---|---|---|
时间 | JDK1.2后推出 | JDK1.0时就已定义 |
性能 | 性能较高,采用异步处理 | 性能较低,采用同步处理 |
输出 | 支持Iterator、ListIterator输出 | 除了支持Iterator、ListIterator输出,还支持Enumeration输出 |
LinkedList
LinkedList
使用双向链表结构
**特点:**对于增加删除快,查找慢。
LinkedList增加了在首部或尾部增删以及获取的方法操作:
public class Demo{ public static void main(String[] args){ LinkedListdata = new LinkedList<>(); //存入首部,类似于栈 data.addFirst(100); data.addFirst(200); Integer i = data.removeFirst(); System.out.println(i); }}//最后输出为200
可以灵活运用从首部或尾部增删取的操作,来实现单端对列或双端队列的操作
而linkedList直接可以利用push
和pop
方法模拟栈
public class Demo{ public static void main(String[] args){ LinkedListdata = new LinkedList<>(); //压栈 data.push(100); data.push(200); //弹栈 Integer i = data.pop; System.out.println(i); }}
转载地址:https://blog.csdn.net/weixin_43454088/article/details/116379139 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月04日 11时55分56秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
http header头设置反向代理不缓存
2019-04-27
配置MySQL主从复制
2019-04-27
CI框架如何删除地址栏的 index.php
2019-04-27
expires与etag控制页面缓存的优先级
2019-04-27
取消掉Transfer-Encoding:chunked
2019-04-27
HTTP协议中的Tranfer-Encoding:chunked编码解析
2019-04-27
JavaScript面向对象编程
2019-04-27
在Javascript中使用面向对象的编程
2019-04-27
PHP Webservice的发布与调用
2019-04-27
php反射类 ReflectionClass
2019-04-27
为 PHP 应用提速、提速、再提速
2019-04-27
Linux下gedit显示行号
2019-04-27
《Advanced PHP Programming》读书笔记
2019-04-27
让我们谈谈RAID
2019-04-27
jQuery日期选择器插件date-input
2019-04-27
PHP使用curl_multi_add_handle并行处理
2019-04-27
NP问题
2019-04-27
AT&T与Intel汇编语言的比较
2019-04-27
javascript解析json
2019-04-27
WinDbg安装与使用
2019-04-27