了解下JAVA的J2SE - 汇合框架
不得不提一下的是:.net网页编程是看到java红,而开发出来的工具。我们都晓得,当想要保留一组基础范例数据时,数组是最无效的保留体例,也是保举利用这类体例的。可是数组是固有巨细的,当运转时才晓得巨细的程序,这类体例利用就受限定了,这就是Java容器类发生的缘故原由。Java汇合类有几个特性:起首,这类容器是高功能的,对基础数据汇合(静态数组、链接表、树和散列表)的完成是高效力的。第二,容器类同意分歧范例的类汇合以不异的体例和高度互操纵体例事情。第三,容器类是简单扩大或修正的。容器类的经常使用的基础范例有List、Set和Map,这些对象范例也称为汇合类,可是在Java中利用了Collection这个名字来指代该类库的一个特别子集,以是业界利用了局限更普遍的“容器”来称号。
Collection:是一个接口,它位于汇合框架条理布局的顶层,承继自Iterable接口,申明是能够用Iterator迭代器来会见该汇合中的元素的。又有List、Set和Queue接口承继Collection接口,间接完成该接口的是一个叫AbstractCollection的笼统类,该笼统类以最年夜限制地削减了完成此接口所需的事情。
List:承继自Collection接口,暗示有序的、可包含反复元素的列表。同时具有Collection内的办法外,还增加了大批的办法,使得能够在List的两头拔出和删除元素。完成该接口的基础类有ArrayList和LinkedList.ArrayList:善于于对元素的随机会见,可是在拔出和删除元素时效力较慢。实在,看看ArrayList类完成的源代码就晓得,ArrayList是以线性表的数据布局情势存取数据的,初始化的表巨细为10,上面就有几个常常用到的中心办法:add(Ee):在以后表的开端拔出元素,假如在后面表不满的情形下,也是很高效的,间接拔出到开端,可是假如在以后表已满的情形下,就要从头天生一个比以后表巨细更年夜的新表,新表的巨细是以后表巨细的1.5倍加1,好比以后表长度为20的,新表的巨细就为31,还必要把以后表元素复制到新表中往,然后把以后表援用指向新表,最初把数值拔出到表开端,以是这类操纵长短常低效的。
add(intindex,Eelement):在指定索引地位拔出元素,反省表巨细和从头追加表巨细和下面的add(Ee)体例是一样的。最初是要把index今后的元素都是要顺次今后移一个巨细,然后把元素拔出到index地位上往。触及到表的复制和表内元素的挪动,以是效力也是比add(Ee)办法还要低。
remove(intindex):在指定索引地位删除元素,就是把index地位后的一切元素都往前移一个巨细,也是触及到表内元素的挪动,效力也是很低的。
remove(Objecto):删除指定的元素,也就必要查找出该元素在表中呈现第一次的地位,查找是用到按次一个一个举行婚配的办法,找出后就把该元素前面的一切元素往前移一个巨细。该办法触及到按次查找和表内元素挪动,比remove(intindex)办法更低效。
set(intindex,Eelement):交换表中索引为index的元素值,前往被交换的值,间接用下标索引会见元素,以是效力十分高。
get(intindex):猎取索引为index的元素,间接用下标索引会见,以是效力也长短常高。
indexOf(Objecto):猎取元素的索引号,也就是必要查找,固然用到了按次查找法,但效力仍是对照高的。
LinkedList:善于于对元素的拔出和删除操纵,但关于随机会见元素对照慢。该类的完成是以双向链表的数据布局为基本的,以是是对照损耗内存的,但它的特定集比ArrayList更年夜。双向链表,每一个节点都有三个域,两个域是寄存前后节点的内存地点援用的,一个域是寄存数据元素的。在LinkedList类中,有一个叫Entry的外部类,是private的,内里三个属性,分离是element、next和previous,分离对应了双向链表中的三个域,在ArrayList类中每实例化一个Entry就天生一个节点。上面看看它的中心办法:add(Ee):把元素拔出到链表开端,起首要实例化一个节点,新节点previous域寄存链表中最初一个节点地点,next域寄存链表中第一个节点地点,element域寄存元素值,链表中最初一个节点的next域寄存新节点的地点,第一个元素的previous域寄存新节点的地点,如许这个元素就拔出到该链表中往了,没有触及到庞大的操纵,以是长短常高效的。
add(intindex,Eelement):在index地位拔出元素,这就必要先查找到该地位。查到后,这里就把查到的节点的前一个节点叫为A,实例化新的节点为B,查到index的节点为C.B的next域即是A的next值(也就是C的内存地点),B的previous域即是C的previous值(也就是A的内存地点),B的element域寄存元素值,然后把A的next域和C的previous域都即是B的内存地点。如许也就把元素拔出到链表的index地位中往了,但触及到了查询,以是效力固然高,但也没有add(Ee)那末高。
remove(intindex):删除在index地位的元素,起首也是要找到该地位的节点。然后把该节点的下一个节点(也就是该节点next域的内存地点谁人节点)的previous值即是该节点的previous值,该节点的上一个节点(也就是该节点previous域的内存地点谁人节点)的next值即是该节点的next值。如许就把该节点从这条链表删除,过程当中固然触及到了查找,但没有触及到像ArrayList类中的remove办法要挪动表中元素,以是该办法的效力仍是很高的。
remove(Objecto):删除在链表中第一个元素为o的节点,也是必要查找到该节点,然后就跟remove(intindex)思绪一样把元素删除,以是效力也是很高的。
set(intindex,Eelement):把在链表中第index个元素值改成element,这也必要找到该节点来修正元素值,但触及到了查找节点,ArrayList中的set办法就不必查找就能够修正,以是相对ArrayList中的set办法,LinkedList办法set办法效力就没那末高了。
get(intindex):猎取第index地位的元素值,也是要找到该节点,以是就也没ArrayList中的get办法那末高效力了,由于该办法必要查找链表。
indexOf(Objecto):猎取该链表中第一o元素的地位,也是要查找链表,但ArrayList中的indexOf办法也是必要查找的,以是这两个类的indexOf的效力都差未几。
以是,在编程中,假如要举行大批的随机会见,就利用ArrayList;假如要常常从表中拔出或删除元素的就应当利用LinkedList.
<p>
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net网页编程也不过3,4本书足以,这就是区别。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 是一种为 Internet发展的计算机语言 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
页:
[1]