List实现类性能和特点分析

面向接口编程:
接口类型 变量 = new 实现类();

List list = new ArrayList();

List实现类特点和性能分析:

三者共同的特点(共同遵循的规范):
1):允许元素重复.

2):记录元素的先后添加顺序.

Vector类: 底层才有数组结构算法,方法都使用了synchronized修饰,线程安全,但是性能相对于ArrayList较低.
ArrayList类: 底层才有数组结构算法,方法没有使用synchronized修饰,线程不安全,性能相对于Vector较高.
ArrayList现在机会已经取代了Vector的江湖地位.
为了保证ArrayList的线程安全,List list = Collections.synchronizedList(new ArrayList(…));
LinkedList类:底层才有双向链表结构算法,方法没有使用synchronized修饰,线程不安全.
数组结构算法和双向链表结构算法的性能问题:
数组结构算法: 插入和删除操作速度低,查询和更改较快.

链表结构算法: 插入和删除操作速度快,查询和更改较慢.

使用的选择:
Vector类打死不用!即使要用选ArrayList类.
如果删除和插入操作频繁,应该选择LinkedList类.
如果查询操作频繁,应该使用ArrayList类.
在开发中使用ArrayList较多,根据具体的需求环境来做选择.
这里写图片描述

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

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

相关文章

数据结构实验之栈八:栈的基本操作

题目描述 堆栈是一种基本的数据结构。堆栈具有两种基本操作方式&#xff0c;push 和 pop。push一个值会将其压入栈顶&#xff0c;而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。 输入 首先输入整数t&#xff08;1 < t < 10&#xff09;&#xff0c;代表测…

F5 BIGip 负载均衡 IP算法解密工具

BIGip是对负载均衡的实现&#xff0c;主要通过Virtual Server、iRules、Pool、Node、Monitor和Persistent&#xff08;会话保持&#xff09;实现。BIGip在实现会话保持机制时会在用户首次发起请求时&#xff0c;会为用户设置一个cookie&#xff0c;即服务端会添加set-cookie响应…

Java集合框架-重构设计

根据Vector类,ArrayList类,LinkedList类所有具有的存储特点以及拥有的方法入手,发现共性就往上抽取. 共同的特点: 1):允许元素重复的. 2):会记录先后添加的顺序. 共同的方法: 如下图. 根据他们的特点,我就可以指定规范: 遵循该规范的实现类,无论底层算法如何,都必须保证允…

回文串判定

题目描述 输入一串字符&#xff08;长度小于100&#xff09;&#xff0c;判断该串字符是否是回文串&#xff08;正序读与逆序读内容相同&#xff09;。 输入 输入一串字符&#xff08;长度小于100&#xff09;。 输出 若该串字符是回文串输出“yes"&#xff0c;否则输出”…

Canal Mysql binlog 同步至 Hbase ES

文章目录一、Canal介绍工作原理canal 工作原理二、下载三、安装使用Mysql准备canal 安装解压缩 canal-deployer配置修改启动查看server日志查看instance日志服务停止canal-client使用Canal Adapter数据同步Hbase数据同步ElasticSearch一、Canal介绍 早期阿里巴巴因为杭州和美国…

java中集合的迭代操作

集合的迭代操作: 把集合做的元素一个一个的遍历取出来. 迭代器对象: Iterator: 迭代器对象,只能从上往下迭代. boolean hasNext(); 判断当前指针后是否有下一个元素 Object next():获取指针的下一个元素,并且移动指针. ListIterator: 是Iterator接口的子接口,支持双向迭代…

Canal同步ES报错,java.lang.ClassCastException: com.alibaba.druid.pool.DruidDataSource cannot be cast to c

Canal同步ES报错 提示类型转换失败 2021-09-20 13:10:54.094 [main] ERROR c.a.o.canal.adapter.launcher.loader.CanalAdapterLoader - Load canal adapter: es7 failed java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassCastException: com.alibab…

C语言实验——数组逆序

题目描述 有n个整数&#xff0c;使其最后m个数变成最前面的m个数&#xff0c;其他各数顺序向后移m&#xff08;m < n < 100)个位置。输入 输入数据有2行&#xff0c;第一行的第一个数为n&#xff0c;后面是n个整数&#xff0c;第二行整数m。输出 按先后顺序输出n个整数。…

用C++11的std::async代替线程的创建

转自&#xff1a;http://www.cnblogs.com/qicosmos/p/3534211.html c11中增加了线程&#xff0c;使得我们可以非常方便的创建线程&#xff0c;它的基本用法是这样的&#xff1a; void f(int n); std::thread t(f, n 1); t.join(); 但是线程毕竟是属于比较低层次的东西&#xf…

HashSet类

Set是Collection子接口&#xff0c;模拟了数学上的集的概念。 Set集合存储特点: 1):不允许元素重复. 2):不会记录元素的先后添加顺序. Set只包含从Collection继承的方法&#xff0c;不过Set无法记住添加的顺序&#xff0c;不允许包含重复的元素。当试图添加两个相同元素进Se…

Mysql写入数据时,adapter 日志报ES连接错误

Mysql写入数据时&#xff0c;adapter 日志报ES连接错误 日志如下&#xff1a; 2021-09-20 13:51:03.795 [pool-1-thread-1] ERROR c.a.otter.canal.adapter.launcher.loader.AdapterProcessor - NoNodeAvailableException[None of the configured nodes are available: [{#tr…

扩展框架分析

在服务器端启动通信服务器程序CommunicateServer.exe,接受客户端的连接&#xff1b;在客户端启动GameStart.exe&#xff0c;连接至服务器端&#xff0c;在接收到“Start”消息时启动GameEntryPoint.exe&#xff0c;GameEntryPoint.exe 将根据配置文件&#xff08;引导文件&…

走迷宫

题目描述 一个由n * m 个格子组成的迷宫&#xff0c;起点是(1, 1)&#xff0c; 终点是(n, m)&#xff0c;每次可以向上下左右四个方向任意走一步&#xff0c;并且有些格子是不能走动&#xff0c;求从起点到终点经过每个格子至多一次的走法数。 输入 第一行一个整数T 表示有T 组…

Canal Mysql同步至ES/Hbase只有新增时生效,修改删除不生效

问题描述 新增Mysql数据时&#xff0c;ES、Hbase数据会同步成功&#xff1b;当删除Mysql数据&#xff0c;或者修改Mysql数据时同步ES、Hbase数据无变化(PS:修改和删除加上LIMIT xxx 就可以成功。) 问题分析 通过查看日志发现新增和删除记录的日志区别&#xff1a;新增data有…

C++ 11 中的右值引用

C 11 中的右值引用 右值引用的功能 首先&#xff0c;我并不介绍什么是右值引用&#xff0c;而是以一个例子里来介绍一下右值引用的功能&#xff1a; #include <iostream> #include <vector> using namespace std; class obj { public : …

LinkedHashSet类

List接口: 允许元素重复,记录先后添加顺序. Set接口: 不允许元素重复,不记录先后添加顺序. 需求: 不允许元素重复,但是需要保证先后添加的顺序. LinkedHashSet:底层才有哈希表和链表算法. 哈希表:来保证唯一性,.此时就是HashSet,在哈希表中元素没有先后顺序. 链表: 来记录…

数据结构实验之串一:KMP简单应用

题目描述 给定两个字符串string1和string2&#xff0c;判断string2是否为string1的子串。输入 输入包含多组数据&#xff0c;每组测试数据包含两行&#xff0c;第一行代表string1(长度小于1000000)&#xff0c;第二行代表string2&#xff08;长度小于1000000&#xff09;&#…

Canal Mysql binlog 同步至 ElasticSearch 详细介绍

文章目录数据同步ElasticSearch单表基本配置适配器映射文件详细介绍&#xff08;单表、多表映射介绍&#xff09;单表映射索引示例sql单表映射索引示例sql带函数或运算操作多表映射(一对一, 多对一)索引示例sql多表映射(一对多)索引示例sql其它类型的sql示例注意事项本文详细介…

基于C++11的线程池

背景 在传统的收到任务即创建线程的情况下&#xff0c;我们每收到一个任务&#xff0c;就创建一个线程&#xff0c;执行任务&#xff0c;销毁线程&#xff0c; 我们把这三个过程所用的时间分别记做T1,T2,T3 任务本身所用的时间仅占T2/(T1T2T3),这在任务本身所用时间很短的情况下…

集合的工具类

集合操作的工具类: 1):Arrays类: 2):Collections类. Arrays类: 在Collection接口中有一个方法叫toArray把集合转换为Object数组. 把集合转换为数组: Object[] arr 集合对象.toArray(); 数组也可以转换为集合(List集合): public static List asList(T… a) 等价于public …