Java高级篇 -- List选择及优化

为什么80%的码农都做不了架构师?>>>   hot3.png

在java编程中,我们常常使用到java自带的集合类List

以下为几点简单的优化建议:

1.Vector还是ArrayList

  Vector有其特有有点,其每个方法都为同步方法【synchronized】,所以是线程安全的,在多线程环境下,若多个进程同时访问受保护资源,用Vector就显得十分简洁,安全。

  ArrayList为非线程安全的,若不是多线程环境,或多线程环境下资源不需要写、更新,只需要读取,使用,或资源不需要受保护,使用ArrayList就大大提高了效率。

  线程安全的散列表将本来可以并行处理的任务进行排队,串行处理。

  同样:Hashtable是线程安全的,HashMap是非线程安全的

 

2.设置ArrayList初始化容量

  ArrayList不断增长过程中会自动扩增其空间,这无疑耗费一定的资源,时间。

  如果已经预料到ArrayList将是一个很大的数组,并且你预料到它将变得异常庞大,可预先设置数组的大小,可以提高添加新元素的速度,并优化性能。

  原来ArrayList list=new ArrayList();

  现在ArrayList list=new ArrayList();

      list.ensureCapacity(N);

 

3.ArrayList与LinkedList

  二者功能相当,但内部实现的数据结构不同

  ArrayList通过object[]实现,LinkedList通过链表。

  由此易得:

  ArrayList:随机访问,顺序添加效率均高于LinkedList,只要用于变动较小的集合存储

             对其添加、删除某位置元素,将移动所有后方元素,效率太低

  LinkedList:在某个位置增删效率较高,用于变动较为频繁的集合存储

 

4.遍历

  若List不发生大小变动【循环中无remove,add操作】,即不用每次检测其大小

  原来:

  for (int i = 0; i < vector.size (); i++)  

  改为:

  for (int i = 0,n=list.size (); i < n; i++)  

  不用每次循环都检测其大小,效率将大大提高

 

5.使用

  除非十分必要,否则尽量使用java提供的集合,不要自己书写功能类似的方法  


转载于:https://my.oschina.net/julycn/blog/331742

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

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

相关文章

每一件事情的开始总是很困难的!

每一件事情的开始总是很困难的&#xff01;我今天花了一下午的时间终于把开头做完了&#xff0c;希望底下的事情&#xff0c;顺顺当当的&#xff01;转载于:https://blog.51cto.com/7305256/1564904

html双翼布局,第19题 CSS如何实现双飞翼布局?

双飞翼布局如下图所示&#xff1a;有了圣杯布局的铺垫&#xff0c;双飞翼布局也就问题不大啦。这里采用经典的float布局来完成。HTML代码&#xff1a;双飞翼布局码云笔记mybj123.comCSS代码&#xff1a;*{margin: 0;padding: 0;}.container {min-width: 600px;}.left {float: l…

【原】关于AdaBoost的一些再思考

一、Decision Stumps&#xff1a; Decision Stumps称为单层分类器&#xff0c;主要用作Ensemble Method的组件&#xff08;弱分类器&#xff09;。一般只进行一次判定&#xff0c;可以包含两个或者多个叶结点。对于离散数据&#xff0c;可以选取该属性的任意一个数据作为判定的…

计算机系统时间无法更改,电脑时间不能修改|系统时间改不了 四个处理办法

电脑时间不能修改|系统时间改不了 四个处理办法&#xff1f;电脑时间不但可以让网友准确的查看时间&#xff0c;还对软件的运行、工作等方面至关重要&#xff0c;有时大家看电脑时间不准确想要修改&#xff0c;确发现改不了系统时间。碰到该故障的朋友不要惊慌&#xff0c;下面…

斐波那契数列(fabnacci)java实现

斐波那契数列定义&#xff1a;From Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/Fibonacci_number In mathematics, the Fibonacci numbers or Fibonacci sequence are the numbers in the following integer sequence:[2][3] or (often, in modern usage)…

计算机二级offic考试题库2017,2017年9月计算机二级MSOffice考试题「带答案」

2017年9月计算机二级MSOffice考试题「带答案」一、单选题1). 存储一个3232点的汉字字形码需用的字节数是( )。A.256B.128C.72D.16正确答案&#xff1a;B2). 无符号二进制整数101001转换成十进制整数等于( )。A.41B.43C.45D.39正确答案&#xff1a;A3). 一个教师讲授多门课程&am…

LiveQing直播点播存储流媒体服务-服务器并发性能及消耗带宽计算参考

LiveQing云端直播点播流媒体软件&#xff1a; 提供设备接入&#xff1b; RTMP推流服务、RTMP分发、HLS分发、HTTP-FLV分发&#xff1b; 云端录像、云端录像检索、云端录像点播、云端录像下载&#xff1b; RTMP转推、推流鉴权验证、推流信息统计、播放信息统计&#xff1b; 直播…

思考设计模式在自助终端软件上的应用 ——Observer(观察着)模式

主要思想&#xff1a;将各硬件模块作为观察者加入观察者队列&#xff0c;当机器状态改变时Notify所有观察者&#xff0c;各观察者根据消息类型做不同反应或不作反应。 下面贴出代码简单实现&#xff0c;希望引起圈内朋友的关注,起到抛砖引玉的效果。 下面两个类是两个基类.…

Visual studio 打包

Visual studio 打包2009-08-07 11:171.打开要打包的“.lsn”文件&#xff0c;在“解决方案资源管理器”中随便打开一个窗口 2.菜单栏“文件”--->“添加”--->“新建项目” 3. 点击“项目类型”--->“其他项目类型”--->“安装和部署”&#xff0c;再在“模板”点击…

MySQL 性能优化的最佳20多条经验分享

当我们去设计数据库表结构&#xff0c;对操作数据库时&#xff08;尤其是查表时的SQL语句&#xff09;&#xff0c;我们都需要注意数据操作的性能。这里&#xff0c;我们不会讲过多的SQL语句的优化&#xff0c;而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧…

RabbitMQ(2) 一般介绍

RabbitMQ 即一个消息队列&#xff0c;主要是用来实现应用程序的异步和解耦&#xff0c;同时也能起到消息缓冲&#xff0c;消息分发的作用。 消息中间件在互联网公司的使用中越来越多&#xff0c;刚才还看到新闻阿里将RocketMQ捐献给了apache&#xff0c;当然了今天的主角还是讲…

python--Websocket实现, 加密 sha1,base64

需要用到gevent-websocket包,这里我们用下图这个 一.websocket简单实现 ep1.py from geventwebsocket.handler import WebSocketHandler from gevent.pywsgi import WSGIServer from geventwebsocket.websocket import WebSocket # 引这个模块为了注释中显示提示用from flask i…

[工具] 解决sublime text运行javascript console无输出问题

1、使用nodeJS在sublime text 运行javascript 下载安装nodeJS在sublime text新建build system&#xff1a;tools->build system->new build system…&#xff0c;输入代码&#xff1a;{ "cmd": ["node", "$file"], "selector"…

计算机考试怎么复制粘贴文件,复制粘贴,教您电脑复制粘贴不能用了怎么解决...

操作电脑过程中经常需要复制、粘贴文字或图片&#xff0c;直接点击右键就可以操作的。但是使用过程中难免遇到一些故障问题导致右键复制粘贴功能无法使用&#xff0c;有些是软件引起的&#xff0c;有些是硬件引起的&#xff0c;怎么解决&#xff1f;下面&#xff0c;小编给大家…

【未解决】Reporting Services报表在浏览器中的显示

今天把微软的报表重新部署一遍&#xff0c;发现在不同的浏览器中&#xff0c;显示的尺寸大小不一样。在IE8浏览器中是正常的&#xff1a;而在火狐浏览器中却始终只有全屏的四分之一大小&#xff0c;无论在报表中如何修改尺寸也没有变化。看起来&#xff0c;应该是在浏览器的什么…

纽大计算机博士,斑马博士捷报|纽约大学 (NYU) MSc Computer Engineering 计算机工程硕士录取...

原标题&#xff1a;斑马博士捷报|纽约大学 (NYU) MSc Computer Engineering 计算机工程硕士录取马博士 (Dr. Zebra, Since 2010)&#xff0c; 10年来深受海内外名校申请者的青睐&#xff01;“定制化" 助你被“高于自身背景”的名校录取&#xff01;斑马博士、斑马博士留学…

GridView中的CheckBox单击事件(oncheckedchanged)

在GridView中加入 CheckBox控件&#xff0c;想通过单击选中出现如下图所示效果&#xff1a; 具体做法是&#xff1a; 前台GV部份省掉。只加关键的CheckBox部份。 <asp:CheckBox ID"ItemCheckBox" oncheckedchanged"ItemCheckBox_CheckedChanged" AutoPo…

我的世界服务器怎么找到指定路径,[小白]MC服务端目录详解

服务器的前期准备工作都做好了&#xff0c;是时候上传服务端到服务器了。不过……先等等&#xff0c;在上传前你应该先了解一下服务端目录的结构以便于后期的维护&#xff01;如图所示的是MCPC1.6.4的服务端结构示意图&#xff0c;其他开服端基本相同&#xff0c;接下来我将逐一…

java中方法的参数传递机制

转载自 &#xff1a;https://www.cnblogs.com/lixiaolun/p/4311863.html 问&#xff1a;当一个对象被当作参数传递到一个方法后&#xff0c;此方法可改变这个对象的属性&#xff0c;并可返回变化后的结果&#xff0c;那么这里到底是值传递还是引用传递?   答:是值传递。Java…

GIT-Linux(CentOS7)系统部署git服务器

GIT-Linux(CentOS7)系统部署git服务器 root账号登录 一、 安装并配置必要的依赖关系在CentOS系统上安装所需的依赖&#xff1a;ssh&#xff0c;防火墙,postfix(用于邮件通知) &#xff0c;wget&#xff0c;以下这些命令也会打开系统防火墙中的HTTP和SSH端口访问。 1.安装ssh su…