|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。条记进修java2SDK1.4.0java.util里边有几个主要的接口,列在这里作为进修的总结:
1java.util.Enumeration
有两个办法hasMoreElements(),nextElement()。利用办法以下:
//打印向量v的一切元素
for(Enumeratine=v.elements();e.hasMoreElements();){
System.out.println(e.nextElement().toString());
}
这里注重要挪用nextElement()起首要判别是不是容器里另有元素,若不判别在容器无下一元素时会抛出
NoSuchElementException非常。
固然要想遍历向量中的元素,还能够用Vector的size()和elementAt(int)两个办法,但总以为仍是这里的
和上面的办法要好(没测试过,人人能够会商)
注:java.util包里完成该接口的只要java.util.StringTokenizer类。
2java.util.Iterator
有三个办法hasNext(),next(),remove()。Iterator接口是用来代替Enumeration接口在java汇合框架中的使用
与Enumeration的区分:多了个remove()办法,办法名字分歧。利用办法以下:
//打印向量v除值为“a“的一切元素
importjava.util.*;
publicclasstest{
publicstaticvoidmain(String[]args){
Vectorv=newVector(4);
v.add("a");
v.add("b");
v.add("c");
v.add("d");
for(Iteratoriter=v.iterator();iter.hasNext();){
if(iter.next().equals("a"))iter.remove();
elseSystem.out.println(iter.next().toString());
}
}
}
运转了局我吃了一惊:只打出一个值c,并且抛出非常NoSuchElementException
缘故原由:第一次轮回挪用iter.next()值为a,挪用iter.remove()将其删除,准确。
第二次轮回挪用iter.next()值为b,进进else语句,又挪用一次iter.next()值为c打印
第三次轮回挪用iter.next()值为d,进进else语句,此时向量v中已无更多元素,再挪用next()
则抛出非常。
结论:好像Enumeration接口一样,每次挪用next(),都要想挪用hasNext(),并且你必需避免挪用了
一次hasNext(),尔后边屡次挪用next();
remove()办法只能删除next()办法所指定的元素,假如你不挪用next(),你就不该挪用remove()
不然会抛出IllegalStatementException,也就是说你不克不及用上面的代码完成相似
要清空汇合里一切的元素
for(Iteraoriter=v.iterator();iter.hasNext();){
iter.remove();
}
注:java汇合Collection里边有个iterator()办法,前往一个Iterator.而详细完成取决于完成该接口的类。
好比AbstractCollection里有个privateclassitr完成了Iterator,而iterator()办法前往的就是这个itr。
一切完成了Collection接口的类都能够间接挪用iterator()
ArrayList,LinkedList,vector,HashSet,TreeSet
3java.util.Comarator
有两个办法:intcompare(objecto1,objecto2),booleanequals(objecto)
前者分离用正,零,负暗示两个对象排序划定规矩中的抢先,相称,掉队
后者判别两对象是不是相称
注:完成该接口的类为Collator。别的“effectivejava“一书对这个接口好象有很具体的形貌
4java.util.RandomAccess
这只是个标记接口,用于标明完成该接口的类撑持fast(generallyconstanttime)randomaccess。
我的了解是即查找元素的工夫与容器里元素的几有关,能够用下标来取元素。以下是jdk中
给的一个对照:
for(inti=0,intn=list.size();i<n;i++)
list.get(i);
for(Iteratoriter=list.iterator();iter.hasNext();)
list.next();
前者运转起来要比后者快
注:完成该接口的类有ArrayList,Vector
5java.util.EventListener
标记接口,一切事务监听者接口必需扩大的接口
6java.util.Observer看不懂实践中怎样用:(
最庞大的Collection和Map接口下次再学吧,饿逝世了
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。 |
|