仓酷云
标题:
发布一篇关于Java Collections API您不晓得的5件事,第1部分
[打印本页]
作者:
不帅
时间:
2015-1-18 11:03
标题:
发布一篇关于Java Collections API您不晓得的5件事,第1部分
没有那个大公司会傻了吧唧用.net开发大型项目,开发了,那等于自己一半的生命线被微软握着呢。而.net不行,限制在window系统,又是捆绑,鄙视微软之!
定制和扩大JavaCollections
关于良多Java开辟职员来讲,JavaCollectionsAPI是尺度Java数组及其一切弱点的一个十分必要的替换品。将Collections主要与ArrayList接洽到一同自己没有错,可是关于那些有探究精力的人来讲,这只是Collections的冰山一角。
固然Map(和它的经常使用完成HashMap)十分合适名-值对或键-值对,可是没有来由让本人范围于这些熟习的工具。可使用得当的API,乃至得当的Collection来修改良多易错的代码。
本文是5件事系列中的第二篇文章,也是专门会商Collections的7篇文章中的第一篇文章,之以是花这么年夜的篇幅会商Collections,是由于这些汇合在Java编程中是云云主要。起首我将会商做每件事的最快(但大概不是最多见)的体例,比方将Array中的内容转移到List。然后我们深切切磋一些较少人晓得的工具,比方编写定制的Collections类和扩大JavaCollectionsAPI。
1.Collections比数组好
刚打仗Java手艺的开辟职员大概不晓得,Java言语最后包含数组,是为了应对上世纪90年月早期C++开辟职员关于功能方面的批评。从当时到如今,我们已走过一段很长的路,现在,与JavaCollections库比拟,数组不再有功能上风。
比方,若要将数组的内容转储到一个字符串,必要迭代全部数组,然后将内容毗连成一个String;而Collections的完成都有一个可用的toString()完成。
除多数情形外,好的做法是尽快将碰到的任何数组转换成汇合。因而成绩来了,完成这类转换的最简单的体例是甚么?现实证实,JavaCollectionsAPI使这类转换变得简单,如清单1所示:
清单1.ArrayToList
import java.util.*;
public class ArrayToList
{
public static void main(String[] args)
{
// This gives us nothing good
System.out.println(args);
// Convert args to a List of String
List<String> argList = Arrays.asList(args);
// Print them out
System.out.println(argList);
}
}
注重,前往的List是不成修正的,以是假如实验向个中增加新元素将抛出一个UnsupportedOperationException。
并且,因为Arrays.asList()利用varargs参数暗示增加到List的元素,以是还可使用它轻松地用以new新建的对象创立List。
2.迭代的效力较低
将一个汇合(出格是由数组转化而成的汇合)的内容转移到另外一个汇合,大概从一个较年夜对象汇合中移除一个较小对象汇合,这些事变其实不鲜见。
您大概很想对汇合举行迭代,然后增加元素或移除找到的元素,可是不要如许做。
在此情形下,迭代有很年夜的弱点:
每次增加或移除元素后从头调剂汇合将十分低效。
每次在猎取锁、实行操纵和开释锁的过程当中,都存在潜伏的并发窘境。
当增加或移除元素时,存取汇合的其他线程会引发合作前提。
能够经由过程利用addAll或removeAll,传进包括要对其增加或移除元素的汇合作为参数,来制止一切这些成绩。
<p>
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。
作者:
因胸联盟
时间:
2015-1-18 14:41
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinkinginjava第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE5.0而写的。
作者:
透明
时间:
2015-1-21 07:52
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者:
小女巫
时间:
2015-1-24 15:48
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
作者:
变相怪杰
时间:
2015-1-25 19:33
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
作者:
飘飘悠悠
时间:
2015-2-3 16:47
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
作者:
灵魂腐蚀
时间:
2015-2-3 21:09
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
作者:
蒙在股里
时间:
2015-2-9 04:58
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
作者:
山那边是海
时间:
2015-2-26 23:44
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
作者:
若相依
时间:
2015-3-8 18:30
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者:
老尸
时间:
2015-3-22 22:10
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2