|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
还是要自己一点一点写代码,然后编译,改错再编译好那。还有最重要的是.net网页编程的编译环境非常好,你甚是不需要了解太多工具,对于简单的系统,你可以之了解一些语法就哦了。
java.util包中包括了一系列主要的汇合类。本文将从剖析源码动手,深切研讨一个汇合类的外部布局,和遍历汇合的迭代形式的源码完成内情。
上面我们先复杂会商一个根接口Collection,然后剖析一个笼统类AbstractList和它的对应Iterator接口,并细心研讨迭代子形式的完成道理。
本文会商的源代码版本是JDK1.4.2,由于JDK1.5在java.util中利用了良多泛型代码,为了简化成绩,以是我们仍是会商1.4版本的代码。
汇合类的根接口Collection
Collection接口是一切汇合类的根范例。它的一个次要的接口办法是:
booleanadd(Objectc)
add()办法将增加一个新元素。注重这个办法会前往一个boolean,可是前往值不是暗示增加乐成与否。细心浏览doc能够看到,Collection划定:假如一个汇合回绝增加这个元素,不管任何缘故原由,都必需抛出非常。这个前往值暗示的意义是add()办法实行后,汇合的内容是不是改动了(就是元素有没有数目,地位等变更),这是由详细类完成的。即:假如办法堕落,总会抛出非常;前往值仅仅暗示该办法实行后这个Collection的内容有没有变更。
相似的另有:
booleanaddAll(Collectionc);
booleanremove(Objecto);
booleanremoveAll(Collectionc);
booleanremainAll(Collectionc);
Object[]toArray()办法很复杂,把汇合转换成数组前往。Object[]toArray(Object[]a)办法就有点庞大了,起首,前往的Object[]仍旧是把汇合的一切元素酿成的数组,可是范例和参数a的范例是不异的,好比实行:
String[]o=(String[])c.toArray(newString[0]);
失掉的o实践范例是String[]。
其次,假如参数a的巨细装不下汇合的一切元素,前往的将是一个新的数组。假如参数a的巨细能装下汇合的一切元素,则前往的仍是a,但a的内容用汇合的元从来添补。特别要注重的是,假如a的巨细比汇合元素的个数还多,a前面的部分全体被置为null。
最初一个最主要的办法是iterator(),前往一个Iterator(迭代子),用于遍历汇合的一切元素。
用Iterator形式完成遍历汇合
Iterator形式是用于遍历汇合类的尺度会见办法。它能够把会见逻辑从分歧范例的汇合类中笼统出来,从而制止向客户端表露汇合的外部布局。
比方,假如没有利用Iterator,遍历一个数组的办法是利用索引:
for(inti=0;i<array.size();i++){...get(i)...}
而会见一个链表(LinkedList)又必需利用while轮回:
while((e=e.next())!=null){...e.data()...}
以上两种办法客户端都必需事前晓得汇合的外部布局,会见代码和汇合自己是紧耦合,没法将会见逻辑从汇合类和客户端代码平分离出来,每种汇合对应一种遍历办法,客户端代码没法复用。
更可怕的是,假如今后必要把ArrayList改换为LinkedList,则本来的客户端代码必需全体重写。
为办理以上成绩,Iterator形式老是用统一种逻辑来遍历汇合:
for(Iteratorit=c.iterater();it.hasNext();){...}
奥妙在于客户端本身不保护遍历汇合的"指针",一切的外部形态(如以后元素地位,是不是有下一个元素)都由Iterator来保护,而这个Iterator由汇合类经由过程工场办法天生,因而,它晓得怎样遍历全部汇合。
客户端从不间接和汇合类打交道,它老是把持Iterator,向它发送"向前","向后","取以后元素"的命令,就能够直接遍历全部汇合。
起首看看java.util.Iterator接口的界说:
publicinterfaceIterator{
booleanhasNext();
Objectnext();
voidremove();
}
依附前两个办法就可以完成遍历,典范的代码以下:
for(Iteratorit=c.iterator();it.hasNext();){
Objecto=it.next();
//对o的操纵...
}
在JDK1.5中,还对下面的代码在语法上作了简化:
//Type是详细的范例,如String。
for(Typet:c){
//对t的操纵...
}
每种汇合类前往的Iterator详细范例大概分歧,Array大概前往ArrayIterator,Set大概前往SetIterator,Tree大概前往TreeIterator,可是它们都完成了Iterator接口,因而,客户端不体贴究竟是哪一种Iterator,它只必要取得这个Iterator接口便可,这就是面向对象的能力。
<p>
J2ME在手机游戏开发的作用也是无用质疑的。至于桌面程序,可能有人说java不行,界面不好看,但是请看看net网页编程Beans和Eclipse吧,他们都是利用java开发的,而他们的界面是多么的华丽,所以界面决不是java的缺点。还有一个不得不提的优点就是大多java人员都挂在嘴边的java的跨平台性,目前这确实也是java优点之一。 |
|