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,一经查实,立即删除!

相关文章

韶关无线电厂台式计算机,中国芯片30年的历史 它背后有哪些不为人知的故事?...

1972年&#xff0c;自主研制的大规模1973年&#xff0c;北京大学、北京有线电厂等单位联合研制150计算机&#xff0c;该机字长数48位&#xff0c;运算能力达每秒100万次&#xff0c;主要用于石油、地质、气象和军事部门。1973年&#xff0c;韶关市无线电厂研制成功晶体管161型“…

Java————迷宫问题

它表示一个迷宫&#xff0c;其中的1表示墙壁&#xff0c;0表示可以走的路&#xff0c;只能横着走或竖着走&#xff0c;不能斜着走&#xff0c;要求编程序找出从左上角到右下角的最短路线。 package algorithm_java;import java.util.Scanner; import java.util.Stack;/*** 路径…

PB中函数测试遇到的问题

在PB中写了一个函数&#xff0c;需要连接两个数据库 tr_1,tr_2&#xff0c;测试时报错&#xff08;无法连接到第二个数据库&#xff09;&#xff0c;再确定该函数代码没有其它问题后&#xff0c;选中该函数&#xff0c;右键Regenerate后&#xff0c;测试成功.转载于:https://ww…

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

每一件事情的开始总是很困难的&#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…

使用IE WebControls中的TabStrip控件和MultiPage控件实现选项卡式风格页面(转载)

第一步&#xff1a; 首先必须安装Internet Explorer WebControls.原始安装下载地址是&#xff1a;http://asp.net/IEWebControls/Download.aspx 下载后可以按照说明进行安装。 也可以下载下面这个我做的简易安装包&#xff0c;下载地址是&#xff1a;http://files.cnblogs.com/…

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

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

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

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

PHP常用字符串函数小结

最近面试被这个面到吐血&#xff0c;特地来fork一些。 来源&#xff1a;https://www.jb51.net/article/145084.htm 一、判断类型的函数 is_bool() //判断是否为布尔型 is_float() //判断是否为浮点型 is_real() //同上 is_int() //判断是否为整型 is_integer() //同…

醒来。。

很久没更新我的博客&#xff0c;缘由有二&#xff1a;其一&#xff0c;博客没人看&#xff0c;没有写下去的动力。其二&#xff1a;真的没啥东西可以写。。。 今天&#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;希望引起圈内朋友的关注,起到抛砖引玉的效果。 下面两个类是两个基类.…

计算机考研新大纲,2020考研计算机新大纲考情分析

随着2020年408统考大纲的发布&#xff0c;我们可以看到&#xff0c;只字未改&#xff0c;这样对大家在准备408备考上可以松一口气&#xff0c;在之后10月份报名的时候可选率非常大。接下来我们来看下考试的目标&#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应用最多的数据库。希望下面的这些优化技巧…

计算机音乐一次就好歌词,沈腾歌曲一次就好歌词

你是不是在找沈腾的一次就好的歌词&#xff1f;下面是学习啦!让小编我来告诉你关于一次就好的歌词的一些相关的资料吧&#xff0c;希望能对你有用!沈腾歌曲一次就好的歌词想看你笑 想和你闹想拥你入我怀抱上一秒红着脸在争吵下一秒转身就能和好不怕你哭 不怕你叫因为你是我的骄…

RabbitMQ(2) 一般介绍

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

Cisco 3550-EMI 交 换 机 配 置 教 程

目录&#xff1a;一、标识交换机二、设置口令及用户三、配置VTP&#xff08;Vlan中继协议&#xff09;四、配置中继线&#xff08;Trunk&#xff09;五、创建、描述Vlan及设置Vlan IP六、划分、描述及设置Vlan端口七、配置STP&#xff08;生成树协议&#xff09;八、启用Vlan间…