Java集合(4)--List接口及其实现类ArrayList、LinkedList和Vector

文章目录

    • List接口概述
    • List接口常用方法
    • ArrayList实现类
    • LinkedList实现类
    • Vector实现类



List接口概述

List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引

List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据
序号存取容器中的元素

List接口的实现类有:ArrayList、LinkedList和Vector

在这里插入图片描述



List接口常用方法

List除了从Collection集合继承的方法外,List 集合里添加了一些根据索引来操作集合元素的方法。

void add(int index, Object ele):在index位置插入ele元素

boolean addAll(int index, Collection eles):从index位置开始将eles中的元素添加进来

Object get(int index):获取指定index位置的元素

int indexOf(Object obj):返回obj在集合中首次出现的位置

int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置

Object remove(int index):移除指定index位置的元素,并返回此元素

Object set(int index, Object ele):设置指定index位置的元素为ele

List subList(int fromIndex, int toIndex):返回[fromIndex,toIndex)处的子集合



ArrayList实现类

线程不安全,效率较高。底层使用数组进行存储。进行查找、末尾添加等操作相对较多的数据通常采用ArrayList实现类。

JDK1.7(类似于单例中饿汉式)

ArrayList list = new ArrayList(); //无参构造器,底层创建了长度为10的Object[]数组elementData
list.add(123); //elementData[0] = new Integer(123);
...
list.add(11); //如果此次的添加导致底层elementData数组容量不够,则会扩容,默认情况下扩容为原来的1.5倍,同时将原有的数组中的数据复制过去//有参构造器
ArrayList listTwo = new ArrayList(int capacity);

JDK1.8(类似于单例中懒汉式)

ArrayList list = new ArrayList(); //无参构造器,底层Object[] elementData初始化为{},即还没有创建长度为10的数组
list.add(123); //第一次调用add()时,底层才创建长度为10的数组
//其余与JDK1.7一样

注意:Arrays.asList(…)方法返回的 List 集合,既不是 ArrayList 实例,也不是
Vector 实例。Arrays.asList(…)返回值是一个固定长度的 List 集合。



LinkedList实现类

线程不安全,效率较高。对于频繁进行插入、删除的操作,建议使用LinkedList类,效率较高。

LinkedList list = new LinkedList(); //内部声明了Node类型的first和last属性,用于记录首末元素,默认值为null
list.add(123); //创建Node对象,将123封装到Node对象中,该对象中还有prev和next两个变量,分别用来记录前一个和下一个元素的位置

Node类型的定义

private static class Node<E> {E item;Node<E> next;Node<E> prev;Node(Node<E> prev, E element, Node<E> next) {this.item = element;this.next = next;this.prev = prev;}
}


Vector实现类

Vector是线程安全的。大多数操作与ArrayList相同。通过Vector()构造器创建对象时,底层都创建长度为10的数组。在扩容方面,默认扩容为原来的数组长度的2倍。

在各种List中,最好把ArrayList作为缺省选择。当插入、删除频繁时,使用LinkedList;Vector总是比ArrayList慢,所以尽量避免使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347612.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java hadoop_单元测试Java Hadoop作业

java hadoop在我以前的文章中&#xff0c;我展示了如何设置一个完整的基于Maven的项目&#xff0c;以用Java创建Hadoop作业。 当然并没有完成&#xff0c;因为它缺少单元测试部分。 在这篇文章中&#xff0c;我将展示如何将MapReduce单元测试添加到我之前开始的项目中。 对于单…

软件连接oracle失败怎么办,【编程开发工具】navicat连接oracle失败怎么办

Navicat连接oracle数据库时连接失败&#xff0c;出现ORA-28547错误。原因&#xff1a;navicat Primium版本的OCi和本地数据库的OCI版本不一致。解决方法&#xff1a;1、把navicat Primium版本自带oci.dll替换本地Oracle安装路径里的oci.dll。我的本地navicat Primium版本自带oc…

Java集合(5)--Set接口及其实现类HashSet、LinkedHashSet和TreeSet

文章目录Set接口概述HashSet实现类LinkedHashSet实现类TreeSet实现类Set接口概述 1、Set接口是Collection的子接口&#xff0c;set接口没有定义额外的方法&#xff0c;使用的都是Collection接口中的方法。 2、Set 集合不允许包含相同的元素&#xff0c;如果试把两个相同的元素…

php设置超链接,怎么给一个PHP密码访问页面加超链接

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼$password "1234"; // 这里是密码$p "";if(isset($_COOKIE["isview"]) and $_COOKIE["isview"] $password){$isview true;}else{if(isset($_POST["pwd"])){if($_POST["…

Java集合(6)--Map接口

文章目录Map接口概述Map结构的理解Map接口常用方法Map接口概述 Map与Collection并列存在&#xff0c;用于保存具有映射关系的数据:key-value Map中的 key 和 value 都可以是任何引用类型的数据 常用String类作为Map的“键”。key 和 value 之间存在单向一对一关系&#xff0…

php+js表单验证数字,.validate表单验证js

$("#signupForm").validate({rules: {name: {required: true},id:{required:true校验类型:}},messages: {name: {required: "请输入姓名"},id{required: 必填校验类型:}}})name可以填入div里的idrequired 设置必填校验类型取值描述requiredtrue|false必填字…

java低延迟_像Java这样的C ++具有低延迟

java低延迟总览 以前&#xff0c;我写过一篇有关Java之类的C的文章。 这是我以前遇到的术语。 但是&#xff0c;经过思考&#xff0c;我认为像Java这样的C 是一个更好的术语&#xff0c;因为您仍在使用OOP惯例&#xff08;不是C惯例&#xff09;&#xff0c;但是您需要投入更多…

Java集合(7)--Map接口的实现类HashMap、LinkHashMap、TreeMap和Properties

文章目录HashMap类LinkedHashMap类TreeMap类Hashtable类Properties类HashMap类 1、HashMap类概述 HashMap是 Map 接口使用频率最高的实现类&#xff0c;允许使用null键和null值&#xff0c;与HashSet一样&#xff0c;不保证映射的顺序。 所有的key构成的集合是Set&#xff1a…

为什么SpringBoot如此受欢迎,以及如何有效地学习SpringBoot?

SpringBoot是最流行和使用最广泛的Java框架。 有时这种讨论“为什么SpringBoot如此受欢迎&#xff1f;” 来我和我的朋友/同事之间。 另外&#xff0c;我确实收到了许多人发来的电子邮件&#xff0c;询问“春天很大&#xff0c;如何快速学习&#xff1f;” 。 在这篇文章中&…

支持linux系统摄像头模块,在Linux操作系统上使用摄像头

我的公家笔记本的摄像头一直没啥用&#xff0c;偶尔用 vmware player 2.0模拟个 msn 用(其实到目前一次都没用过)。搞过安全对这东西严重不信任通常都不驱动&#xff0c;忽然想起重案6组那个警察兄弟说搞高科技的最怕高科技产品。linux 下一直没装&#xff0c;晚上闲着没啥事&a…

Java实现复数Complex的加减乘除运算、取模、求幅角角度

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; /*** Author: Yeman* Date: 2021-09-23-9:03* Description:*/…

linux 域账户密码忘记,linux基础命令-用户域用户组管理

//与用户相关的配置文件&#xff1a;/etc/passwd: #用户的配置文件&#xff0c; 保存用户账户的基本信息/etc/shadow #用户影子口令文件一、用户帐号文件——passwd1.“/etc/passwd”文件是UNIX安全的关键文件之一。该文件用于用户登录时效验用户的登录名、加密的口令数据项、…

Java集合(8)--集合工具类Collections

Collections 是一个操作 Set、List 和 Map 等集合的工具类。 Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作&#xff0c;还提供了对集合对象设置不可变、对集合对象实现同步控制等方法。 排序操作 reverse(List)&#xff1a;反转 List 中元素的顺…

Java程序员应在2018年学习的3种JVM语言

如果您是Java程序员&#xff0c;并且想学习更多的编程语言以扩展您的知识和技能&#xff0c;但是不确定选择哪种编程语言&#xff0c;那么您来对地方了。 在本文中&#xff0c;我将分享Java程序员可以在2018年学习的3种JVM语言以及为什么要学习它们。 成为多语种开发人员的素质…

Java泛型(1)--集合使用泛型Generic、自定义泛型、泛型在继承上的体现、通配符的使用

文章目录泛型的概念集合中使用泛型自定义泛型结构泛型在继承上的体现通配符的使用泛型的概念 集合容器类在设计阶段/声明阶段不能确定这个容器实际存的是什么类型的对象&#xff0c;所以在JDK1.5之前只能把元素类型设计为Object&#xff0c;JDK1.5之后使用泛型来解决。因为这个…

linux 内存 面试,【Linux内存面试题】面试问题:查看机器配置命… - 看准网

1、查看内存大小solari&#xff1a;prtconf -vp | grep Memlinux &#xff1a;grep MemTotal /proc/meminfo2、查看硬盘大小solari&#xff1a;df -klinux &#xff1a;fdisk -l[rootssoldap ~]# fdisk -lDisk /dev/sda: 146.6 GB, 146685296640 bytes255 heads, 63 sectors/tr…

蚂蚁组件 axure 蚂蚁_蚂蚁属性细微差别

蚂蚁组件 axure 蚂蚁每隔一段时间&#xff0c;我会想起Ant属性的一些细微差别 &#xff0c;一旦忘记它们&#xff0c;在与Ant交互时会引起混乱。 特别是&#xff0c; Ant属性 通常是不可变的 &#xff08;不包括Ant 1.8以来的局部属性 &#xff09;&#xff0c;并且在其第一次设…

JavaIO流(1)--File类的使用

文章目录File类概述常用构造器常用方法File类概述 File类能新建、删除、重命名文件和目录&#xff0c;但不能访问文件内容本身&#xff0c;如果需要访问文件内容本身&#xff0c;则需要使用后续的输入/输出流。 要在Java程序中表示一个真实存在的文件或目录&#xff0c;那么必…

linux抓包提示没有权限,linux下wireshark不用sudo权限抓包包

ubuntu安装了wireshark&#xff0c;发现打不开网络接口&#xff0c;后来从网上得知要用sudo从命令行执行&#xff0c;确实可以&#xff0c;但是执行过程中一直要开一个命令行窗口&#xff0c;不爽&#xff0c;想直接用单击图标的方法运行之&#xff0c;在网上查询找到以下两个方…

Http基本身份验证在Spring Security中如何工作?

在上一篇文章中&#xff0c;您学习了如何在基于Spring安全性的Java应用程序中启用Http基本身份验证 &#xff0c;现在&#xff0c;我们将进一步进一步了解http基本身份验证在Spring安全性中的工作原理。 如果您还记得的话&#xff0c;当您使用HTTP Basic进行身份验证时&#xf…