List集合之LinkedList(三)LinkedList总结

Java List对象转List方法】——实现集合类型转换的高效方法 然后,我们通过在LinkedList的构造函数中传入"sourceList"来创建了一个新的LinkedList对象"targetList",实现了从ArrayList到LinkedList的转换。假设我们有一个名为"sourceList"的ArrayList对象,我们希望将其转换为LinkedList类型的集合。综上所述,通过使用Java提供的不同方法,我们可以高效地实现List对象到其他集合类型的转换。选择适合具体场景的方法,可以提高代码的可读性和执行效率,从而优化程序的性能。(本文总字数:361) 阅读详情

// size()用于返回集合元素个数

// 即 return size;

linkedList.size();

// toArray()用于将集合转为Object[]数组

// 内部实现:

// 1.先创建一个长度为size的Object[]数组

// 2.遍历LinkedList底层链表的节点,并取出节点的item存入数组中

linkedList.toArray();

// toAarry(T[] a)用于将集合转成T[]数组

// 当形参a数组的长度小于size时,创建一个T[]类型的长度为size的新数组

// 当形参a数组的长度大于size时,则将大于size部分的索引元素设为null

// 遍历链表,将集合元素存入数组0~size-1索引中。

linkedList.toArray(new Object[0]);

}

public static void testMethodFromObject(){

LinkedList linkedList = new LinkedList();

Person p1 = new Person(“qfc”,18);

Person p2 = new Person(“zyx”,19);

Person p3 = new Person(“swk”,20);

Person p4 = new Person(“zbj”,21);

Collections.addAll(linkedList,p1,p2,p3,p4);

System.out.println(linkedList.get(0));

/**

  • 由于LinkedList实现了Cloneable接口,且重写clone方法,在clone方法中调用了super.clone(),获得对象拷贝

  • 后面将拷贝对象的first,last设为null,将size,modCount设为null

  • 然后遍历被拷贝对象的节点,将节点中的item取出,通过cloneObject.add(item);给克隆对象插入对应元素

  • 为什么不直接使用super.clone()结果呢?因为这样会导致 拷贝对象的first,last 和 被拷贝对象的first,last 指向同一个内存上节点,这实际上已经不算对象克隆了。

*/

LinkedList clone = (LinkedList)linkedList.clone();

Person person = (Person) clone.get(0);

person.setName(“sg”);

person.setAge(12);

System.out.println(linkedList.get(0));

/**

  • 说明:LinkedList的对象克隆是浅克隆

*/

}

public static void testMethodFromDeque(){

LinkedList linkedList = new LinkedList©;

System.out.println(linkedList);

//下面几个方法都是见名知意的

linkedList.addFirst(“A-”);//[A-,A, B, C, D]

linkedList.addLast(“Z”);//[A-,A, B, C, D, Z]

linkedList.removeFirst();//[A, B, C, D, Z]

linkedList.removeLast();//[A, B, C, D]

linkedList.removeFirstOccurrence(“A”);//[B, C, D]

linkedList.removeLastOccurrence(“B”);//[C, D]

//下面几个方法是模拟顺序栈的操作

linkedList.push(“A-”);//[A-,C, D]

linkedList.peek();//[A-,C, D]

linkedList.pop();//[C, D]

System.out.println(linkedList);//[C, D]

//下面几个方法是模拟双向栈的操作

//注意offer()是栈底压栈

linkedList.offer(“A–”);//[C, D, A–]

linkedList.offerFirst(“A-”);//[A-, C, D, A–]

linkedList.offerLast(“Z”);//[A-, C, D, A–, Z]

linkedList.peekFirst();//[A-, C, D, A–, Z]

linkedList.peekLast();//[A-, C, D, A–, Z]

linkedList.poll();//[C, D, A–, Z]

linkedList.pollFirst();//[D, A–, Z]

linkedList.pollLast();//[D, A–]

System.out.println(linkedList);

//取出栈顶元素

Object element = linkedList.element();//D

System.out.println(element);

}

public static void testIterator(){

LinkedList linkedList = new LinkedList©;

// iterator()本质是调用的LinkedList的listIterator(0);

// 所以该方法本质是返回一个ListIterator对象

Iterator iterator = linkedList.iterator();

ListIterator listIterator = (ListIterator) iterator;

boolean hasPrevious = listIterator.hasPrevious();

System.out.println(hasPrevious);//由于该迭代器本质是listIterator(0),所以next为node(0),所以nextIndex=0,而hasPrevious内部是要求 nextIndex>0

boolean hasNext = listIterator.hasNext();

System.out.println(hasNext);//hasNext()本质就是要求 nextIndex<size

listIterator.next();

listIterator.next();

listIterator.next();

listIterator.next();

System.out.println(listIterator.hasNext());

System.out.println(listIterator.hasPrevious());

listIterator.previous();

listIterator.previous();

listIterator.nextIndex();

listIterator.previousIndex();

/**

  • 到目前为止,以证明了LinkedList的iterator()方法,该方法虽然返回的是Iterator实现类对象,但实质是ListIterator实现类对象

  • 因为Iterator实现类对象没有previous(),hasPrevious(),nextIndex(),previousIndex()方法

  • 其他set,add方法就先不在此处演示

*/

}

public static void testListIterator(){

/**

  • LinkedList有两种方式直接获取ListIterator实现类对象

  • 1.ListIterator listIterator();

  • 2.ListIterator listIterator(int index);

  • 其中1的内部实现就是调用了2的listIterator(0);这里不演示listIterator()

*/

LinkedList linkedList = new LinkedList©;

ListIterator listIterator = linkedList.listIterator(4);

while (listIterator.hasPrevious()){

System.out.println(listIterator.previous());

}

System.out.println(“====================================”);

System.out.println(listIterator.nextIndex());

System.out.println(listIterator.previousIndex());

System.out.println(“====================================”);

while(listIterator.hasNext()){

System.out.println(listIterator.next());

}

System.out.println(“====================================”);

System.out.println(listIterator.nextIndex());

System.out.println(listIterator.previousIndex());

System.out.println(“====================================”);

listIterator.add(“E”);

System.out.println(linkedList);

System.out.println(“====================================”);

// 注意add操作后,lastReturned被重置为null,而remove操作时删除lastReturned索引上节点,所以该处remove操作会抛出非法状态异常

// listIterator.remove();//java.lang.IllegalStateException

listIterator.previous();

listIterator.remove();

System.out.println(linkedList);

System.out.println(“====================================”);

// 注意remove操作后,lastReturned被重置为null,而set操作是修改lastReturned索引上的节点的item,所以该处set操作会抛出非法状态异常

// listIterator.set(“DD”);

listIterator.previous();

listIterator.set(“DD”);

System.out.println(linkedList);

System.out.println(“====================================”);

listIterator.previous();

listIterator.previous();

// 注意foreachRemaining不是从头遍历集合,而是从nextIndex索引为止开始遍历剩下的集 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】 合元素

listIterator.forEachRemaining(data-> System.out.println(data));

}

public static void testDescendingIterator(){

LinkedList linkedList = new LinkedList©;

Iterator descendingIterator = linkedList.descendingIterator();

while (descendingIterator.hasNext()){

Object next = descendingIterator.next();

System.out.println(next);

if(next.equals(“C”)){

descendingIterator.remove();

}

}

System.out.println(linkedList);

System.out.println(“====================================”);

LinkedList linkedList1 = new LinkedList©;

Iterator descendingIterator1 = linkedList1.descendingIterator();

descendingIterator1.forEachRemaining(data-> System.out.println(data));

/**

  • 测试DescendingIterator迭代器,发现它的hasNext,next,foreachRemaing都是逆序执行

  • 因为hasNext的内部实现调用的是ListItr的hasPrevious

  • next的内部实现调用的是ListItr的previous

  • foreachRemaining内部调用是自己的hasNext,和next

*/

}

}

package linkedlist;

public class Person implements Cloneable{

private String name;

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public Person(String name, int age) {

this.name = name;

this.age = age;

}

@Override

public String toString() {

return “Person{” +

“name='” + name + ‘’’ +

“, age=” + age +

‘}’;

}

@Override

public boolean equals(Object o) {

if (this == o) return true;

if (!(o instanceof Person)) return false;

Person person = (Person) o;

if (getAge() != person.getAge()) return false;

return getName() != null ? getName().equals(person.getName()) : person.getName() == null;

}

@Override

public int hashCode() {

int result = getName() != null ? getName().hashCode() : 0;

result = 31 * result + getAge();

return result;

}

@Override

protected Object clone() throws CloneNotSupportedException {

return super.clone();

}

}

思考题

===

为什么LinkedList不直接继承AbstractList,而要继承AbstractSequentialList?


我们知道ArrayList,Vector直接继承了AbstractList。而LinkedList直接继承了AbstractSequentialList。

而AbstractList,AbstractSequentialList作为List实现类的抽象父类,它们存在的意义是提取子类中重复代码形成模板。

而ArrayList,Vector的底层是数组,LinkedList的底层是双向链表。它们实现基本操作如增删改查的的实现是不一样的。

所以说  AbstractList是ArrayList,Vector的抽象,AbstractSequentialList是LinkedList的抽象。

另外,AbstractSequentialList的基本操作都依赖于listIterator(int index)方法,而LinkedList中重写了listIterator(int index),所以AbstractSequentialList中的操作都依赖于LinkedList中的listIterator(int index)

为什么说ArrayList的容量是伪动态的?而说LinkedList的容量是真动态的?


因为ArrayList的底层是数组。而数组的长度是固定的,一旦初始化,就无法再变更数组长度。

ArrayList的动态容量是 通过创建新数组来实现的。

而LinkedList的底层是双向链表。而链表的长度不是固定,后期可以实时增加或减少。

所以说LinkedList的容量 是 真动态的。

为什么说LinkedList的集合元素索引是伪索引?而ArrayList是真索引?


因为ArrayList的底层是数组。而数组本身是有索引的。所以说ArrayList集合元素的索引是真索引。

而LinkedList的底层是双向链表,而链表节点是没有索引能力的。体现在LinkedList元素上的索引,其实是底层链表的节点的顺序序号,即first节点的元素是索引0,last节点的元素是索引size-1。

LinkedList的元素插入删除肯定比ArrayList快吗?ArrayList的查询操作一定比LinkedList的快吗?


如果ArrayList容量足够的话,插入元素应该比LinkedList快。因为ArrayList可以随机访问,可以借助索引直接插入元素,不需要像LinkedList需要顺序访问,从first节点还是一个一个实时计算索引,然后创建新节点,删除旧节点,解开旧链接,创建新链接。

还有ArrayList删除最后一个索引的元素 理论上是比 LinkedList删除元素快的,因为ArrayList删除最后一个索引的元素,只需要将底层数组该索引元素设置null即可。不需要移位操作。而LinkedList删除元素,实际上是删除节点,而删除节点前需要找到节点,这些动作比较耗时。

ArrayList的查询操作也是随机访问性的,即可以根据索引直接访问对应元素。

LinkedList查询首尾元素很快,因为first和last节点在二分法查询下都是第一个被遍历的节点。所以感觉也很快,不一定比ArrayList的慢。

我们常说的LinkedList插入删除元素比ArrayList快,有如下场景

1.ArrayList容量不足时,需要扩容,然后将老数组中元素全部按序复制到新数组中。

2.ArrayList越靠前的索引处插入或删除元素时,后面元素都要做移位操作。

而LinkedList由于是真动态容量,所以不需要手动扩容,另外LinkedList插入删除元素,底层链表不需要后面的节点移位,只需要在操作的地方解开链,再创建新链就可以了。

我们常说的ArrayList查询元素比LinkedList快是,有如下场景

1.LinkedList每次查询对应索引的元素,都要通过遍历链表节点,来实时计算每个节点元素的索引,如果是单次还好,如果是循环查索引,它的复杂度将是ArrayList的n倍。

2.LinkedList采用二分法查询节点,并访问节点元素。如果是首尾节点还好,查询会很快。但是如果是靠近中间的节点,就会查询很慢。

而ArrayList是可以根据索引直接访问对应元素的。

所以只能本题的问题的前面加上一个前提词:大体上。

大体上,ArrayList查询快,增删慢。大体上,LinkedList增删快,查询慢。

比较下Stack模拟栈和LinkedList模拟栈的区别


二者的区别主要是底层数据结构上的。

Stack的底层是数组。LinkedList的底层是双向链表。

数组和双向链表都可以模拟栈。栈数据结构的特点是:元素后进先出。主要操作有push,peek,pop

而数组可以将每次push的元素存在数组的length-1索引位置,peek操作取出length-1索引位置的元素,pop是取出length-1索引位置的元素,并设置该索引元素为null(达到删除元素的目的)

但是数组有个缺点就是容量固定,当push元素超出数组长度时,需要扩容,即创建新数组来转移存储。整体来说,性能不是很好。

而双向链表模拟栈比数组更加合适,双向链表可以将first节点处当成栈顶,也可以将last节点当成栈顶,且双向链表push,pop操作起来就是创建新节点,新链接,删除老节点,老链接的事,没有扩容,转移存储这些麻烦的操作。peek就是获取栈顶的节点的元素。双向链表本身操作首尾节点就很快,所以说双向链表模拟栈太合适了。

另外Stack只能模拟顺序栈,不能模拟双向栈。而LinkedList模拟双向栈简直就是蜜蜂掉到糖罐里,找到家了。相应的LinkedList的栈操作方法比Stack多,多的部分主要是双向栈的操作。

如 offer(E e),offerLast(E e) 压栈(底)offerFirst(E e)压栈(顶)

poll(),pollFirst() 弹栈(顶)  pollLast() 弹栈(底)

peek(),peekFirst() 获取栈顶元素  peekLast()获取栈底元素

push(E e) 压栈(顶),pop() 弹栈(顶)

为什么说LinkedList是双向不循环链表呢?


JDK8中,LinkedList的first,last节点有特殊注释说明

一般循环链表的first,last是链接的,即first.prev = last ; last.next = first;

但是在JDK8 LinkedList源码中 关于 first,last节点的描述只有两种情况

空链表:first = null, last = null

非空链表 first.prev = null && first != null

last.next = null && last != null

所以LinkedList从设计上来说,就不是循环链表。

LinkedList支持对象克隆吗?是深克隆还是浅克隆?


LinkedList实现了Cloneable接口,且重写了clone()方法,重写的clone()中调用super.clone()。

异步复位同步释放:如何确保复位信号的可靠性与时序安全 本文深入探讨了异步复位同步释放技术在数字电路设计中的关键作用,详细分析了复位信号的可靠性与时序安全问题。通过对比异步复位与同步复位的本质区别,揭示异步复位的优势与潜在风险,并提供了标准的Verilog实现方案。文章还涵盖了多时钟域下的复位同步策略、复位网络时序约束方法以及实际工程中的经验教训,为数字系统设计者提供了全面的复位信号处理指南。 阅读详情

相关推荐

RedPitaya火龙果板基础操作

火龙果板基础操作一级目录二级目录三级目录 一级目录 二级目录 三级目录

qq_41523340的博客 9731

Java总结之集合篇

Java总结之集合篇

m0_56423338的博客 1270

Maya vray 3S皮肤材质球设置与材质节点连接

Maya vray 3S皮肤材质球设置与材质节点连接

WETQETF的博客 2697

List 集合 —— LinkedList

LinkedList概述LinkedList 双向链表实现 & 成员变量LinkedList 构造方法LinkedList 的增删改查LinkedList 添加节点的方法LinkedList 删除节点的方法LinkedList 查询节点的方法LinkedList 修改节点的方法LinkedList 的元素查询方法总结 概述 图中蓝色实线箭头是指继承关系 ,绿色虚线箭头是指接口实现关系。 LinkedList 继承自 AbstractSequentialList 并实现了 List 接口 和

什么样的人不睡觉的博客 1279

机器人控制基础:电机编码器常见类型

电机编码器是测量电机位置、速度和方向的传感器,主要分为光电、磁性和旋转变压器三类。光电编码器精度高但需防尘,适用于伺服系统;磁性编码器耐环境性强,常用于汽车电机;旋转变压器适应极端环境,多用于军工领域。按信号类型可分为增量式(成本低)和绝对式(断电保留位置)。选型需综合考虑精度、环境适应性及成本。

start_up_go的博客 476

Android14 SystemUI如何实现下拉菜单栏高斯模糊背景效果(类似于毛玻璃效果)

我们都知道,从Android12起,下拉菜单栏控制中心都是黑色的,看起来非常不美观,而且国内的手机系统UI都做的比较美观,大部分的下拉菜单UI背景都是实现了高斯模糊效果,所以客户也会要求实现类似于这样的效果。在以前的Android项目中,实现下拉菜单栏的模糊背景就是通过截图的方式进行替换背景,而这种方式下拉菜单背景极易替换不了,就算是在各个地方都适配,还是有概率在复杂场景或者一些测试手法下出现背景是黑的情况,并且这种方式还比较影响性能,毕竟每次都要去截图一次,多做了额外的事。

热衷于Android Framework和系统APP的修改经验分享 1797

Java基础进阶List-LinkedList集合

在以后的开发中,如果遇到随机增删集合元素的业务比较多时,建议使用LinkedList链表的缺点:不能通过数学表达式计算被查找元素的内存地址,每一次查找都是从头节点开始遍历,直到找到为止。所以LinkedList集合检索/查找的效率较低,ArrayList:把检索发挥到极致LinkedList:把随机增删元素发挥到极致加元素都是往末尾添加,所以ArrayList用的比LinkedList多。

qq_46096136的博客 7918

i茅台最新任务python脚本

从固定的 `header_context` 生成HTTP请求头,并加入用户的`userId`、`MT-Token`等动态信息,以模仿真实的请求。- 发送预约请求,提交商品和门店的参数,如 `sessionId`、`shopId`、`itemId` 等。- 定时任务:通过 `cron` 表达式 `0 0 9/21 * * *`,表示每月的9日和21日的0点执行。- `login`:使用验证码进行登录,并返回 `token` 和 `userId`。- 获取北京时间当天0点的时间戳,作为预约请求的时间参数。

三维点云技术探索 987

Java集合之List:LinkedList

继承及实现接口关系 继承抽象类: AbstractSequentialList:该抽象类继承自AbstractList,仅支持按次序访问 实现接口: List Deque(使得LinkedList可以作为双向队列使用) Cloneable(标志 只有实现该接口才可以重写Object中的clone方法) Serializable(标志 表示当前类对象可以序列化,可以使用关键字transient区别字段不需要被序列化) 底层实现 // 头节点 transient Node<E> f

sinat_41581976的博客 1396

50、压电微泵与技术设备驱动的研究分析

本文研究了压电微泵在弹性微通道中的流体流动特性及技术设备驱动的振动行为。通过建立轴对称流固耦合模型,利用FreeFem++进行数值模拟,分析了不同数量压电致动器和频率对微泵流量的影响,发现多个致动器按特定时序压缩可产生净正向流量,并提出了稳态流量的近似解析公式。同时,针对技术设备驱动系统,探讨了周期性负载引起的强迫振动特性,明确了共振条件及影响因素,并比较了主动、被动和优化设计等振动控制策略。最后展望了实验验证、多物理场耦合与智能控制等未来研究方向,为相关设备的优化设计与高效运行提供了理论支持。

convnet3designer的博客 148

51、基于深度卷积神经网络的自闭症分类研究

本研究提出了一种基于深度卷积神经网络的自闭症分类方法,通过融合VGGNet-19和ResNet-52模型的特征,并在决策层采用SVM分类器,实现了对自闭症谱系障碍(ASD)和典型发育(TD)个体的准确区分。研究使用ABIDE数据集,结合数据增强和特征拼接技术,取得了88.12%的分类准确率和0.88的ROC曲线下面积。结果表明,该方法在自闭症自动诊断中具有良好的性能,同时研究也探讨了其局限性,并展望了未来改进方向,如多模态数据融合、迁移学习和模型可解释性的提升。

grpc6streamer的博客 131

Java中List集合的三个子类ArrayList、Vector、LinkedList

区别List集合和Set集合的区别 ArrayListVectorLinkedList底层结构数组结构数组结构链表结构特点查询快,增删慢查询块,增删慢查询慢,增删块安全性不安全,不同步,效率高安全的,同步的,效率低不安全,不同步,效率高...

liuchonghua的博客 954

【100%通过率】华为OD机试真题 Python【数字最低位排序】【最低位排序】

2023华为OD机试真题 Python【数字最低位排序】【最低位排序】 给定一个非空数组(列表) 起元素数据类型为整型 请按照数组元素十进制最低位从小到大进行排序 十进制最低位相同的元素,相对位置保持不变 当数组元素为负值时,十进制最低为等同于去除符号位后对应十进制值最低位

MISAYAONE的博客 1902

【集合List系列三】LinkedList

需要链接元素到队列尾时优先用offer()查看元素优先使用peek()删除元素优先使用poll()想要在指定索引位置链接元素可以使用 add(int index, E element)获取指定索引的元素可以使用 get(int index)修改指定索引的元素可以使用 set(int index, E newElement)👍🏻呗。❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄👍 👍 👍。

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 435

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

List集合之LinkedList(三)LinkedList总结,如何学习web开发

给大家分享一些关于HTML的面试题,有需要的朋友可以戳这里免费领取,先到先得哦。通过 iterator()方法获取自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

2401_84093490的博客 791

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

List集合之LinkedList(三)LinkedList总结(1)

资料过多,篇幅有限,需要文中全部资料可以点击这里获取前端面试资料PDF完整版!自古成功在尝试。不尝试永远都不会成功。勇敢的尝试是成功的一半。我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

peixiancccc的博客 369

Web前端最全List集合之LinkedList(三)LinkedList总结,膜拜大牛

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】/**特性测试结果:1.集合元素类型可以不一致,但是必须是引用类型2.集合容量是动态的3.LinkedList集合元素有索引,有序,可重复*//**构造器测试结果:无参构造器创建的是一个空集合带参构造器创建的是一个将参数c集合元素,按照c.toArray()后数组元素的顺序一一加入到LinkedList集合中。无参构造器创建的集合对象的first,last节点都为null,size=0;

2401_84447149的博客 643

java集合系列——List集合之LinkedList介绍(三)

LinkedList是基于链表实现的,从源码可以看出是一个双向链表。除了当做链表使用外,它也可以被当作堆栈、队列或双端队列进行操作。不是线程安全的,继承AbstractSequentialList实现List、Deque、Cloneable、Serializable。

阿飞云漫步 9252

List集合之LinkedList介绍(三)

1. LinkedList的简介 JDK1.7.0_79版本LinkedList是基于链表实现的,从源码可以看出是一个双向链表。除了当做链表使用外,它也可以被当作堆栈、队列或双端队列进行操作。不是线程安全的,继承AbstractSequentialList实现List、Deque、Cloneable、Serializable。public class LinkedList&lt;E&gt; ...

qq_35854212的博客 189

java集合类(三)List之LinkedList

LinkedList概述  LinkedList是基于链表的list,与C++中的链表是相同的,它是一个双向链表。先来看下LinkedList的定义:public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializ

拨开云雾看世界 1232

List集合的三个子实现类(ArrayList、vector、linkedList)的一些用法

ArrayList集合在前面我们学习了Collection以及他的子集合List,子集合中有三个实现类分别是ArrayList,vector,LinkedList三个集合,接下来让我们了解一下这三个集合: ArrayList是List集合的一个常用子实现类,所以他可以使用List以及collection集合的方法Arraylist集合对字符串的两种遍历方式:package com.ArrayLis...

j_better的博客 440

【java】【集合】List的三个子类—ArrayList、Vector、LinkedList的区别和联系

一、List的三个子类的特点 1、ArrayList:            底层数据结构是数组,查询快,增删慢。            线程不安全,效率高。2、 Vector:            底层数据结构是数组,查询快,增删慢。            线程安全,效率低。    Vector相对ArrayList查询慢(线程安全的)    Vector相对LinkedList增删慢(数组结...

love_Aym的博客 362
上一篇: LeetCode - Medium - 450
下一篇: mask-image实现聚光灯效果
宇小哥
博客等级 码龄5年 4粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值